Сегодня я играл с flex и bison, и что-то вроде жуткого внимания привлекло мое внимание.
localhost:c math4tots$ lex c.l
localhost:c math4tots$ yacc -d c.y
localhost:c math4tots$ rm c.l c.y
localhost:c math4tots$ gcc c.c lex.yy.c y.tab.c
c.y: In function ‘opr’:
c.y:120: error: ‘nodeType’ has no member named ‘oper’
Я только прошел cc lex.yy.c и y.tab.c (ch и y.tab.h также включены как заголовки), но gcc каким-то образом знает о cl и cy. Фактически, даже после того, как я удалил cl и cy, gcc знает, где в cy была ошибка в коде.Как это происходит?
Мне кажется, что я видел нечто подобное для некоторых других инструментов, которые я использовал в прошлом, но я точно не помню, какими они были.