PA3 пройден, он был о подсчёте выражений в условиях препроцессора (#if expression).
Довольно весело было программировать что signed\unsigned флаг результата передаётся статически по веткам тернарного оператора, даже если значения не рассчитываются.
Например :
Результат будет 5u, потому что одно из подвыражений стало беззнаковым.
Задание включало в себя sanity тест размером в 11 мегабайт, примерно такого содержания :
-132 >> 124u % +'a'
-132 >> (124u % +'a')
-132 >> 424 % 124u
-132 >> (defined a % ~u'z')
-132 >> (424 & 124u)
-132 >> (defined a & ~u'z')
После его прохождения я
кончел и закурил. (шутка, я не курю =)