Семантики
Nonterminal: production_body_1 { semantic_action_1 } | . . . production_body_n { semantic_action_n } ;
Грамматические правила могут содержать так называемые семантики (semantic actions), представляющие собой фрагменты программ на языке С, заключенные в фигурные скобки. Например,
lines: lines expr '\n' { printf ("%s\n", %2); }
Нетерминал может иметь значение некоторого типа, который указан в объединении, определенном в секции объявлений. Для этого
Причем, в объединении должен быть элемент вид имя-вида. Например,
%union { ... unsigned short int myCounter; ... } %type <myCounter> counter %%
Заметим, что значение может иметь не только нетерминалы, но и терминальные символы. В этом случае терминал должен быть объявлен следующим образом: %type <имя-вида> имя-нетерминала
Естественно, в объединении должен быть элемент вид имя-вида. Например,
%union {... signed int myValue;...} %token <myValue> NUMBER_LC