Вы получаете отдельный %union
объект для каждого токена. Например, типичное правило будет выглядеть примерно так:
expr: value '+' value: { $$ = $1 + $3; }
В этом случае $$
, $1
и $3
каждый представляет отдельный объект типа, который вы определили в операторе %union
. Как правило, у вас будет что-то вроде:
%union {
int int_val;
/* ... */
}
и
%type <int_val> value expr
, что означает, что правила value
и expr
производят объекты% union, в которых допустим элемент int_val
.