$$
присвоит токену exp
значение var
. Так что это статично.
Если вы хотите проанализировать WORD
и получить его значение, вы должны использовать $$ = $1
, где $ 1 - значение первого токена вашего правила ( id est токен WORD)
Это то, что вы намеревались сделать? Я не уверен в этом, так как вы сделали это правильно для exp '/' exp
?
РЕДАКТИРОВАТЬ: Чтобы хранить каждое слово в переменной, я бы предложил вам использовать таблицу с плавающей точкой.
Вам нужно будет использовать счетчик для увеличения индекса таблицы. Но вы должны позаботиться о том, чтобы различные значения слов были сохранены в соответствующем порядке.
EDIT2:
(Не знаю, скомпилируется ли он как есть)
Я думаю, что это будет выглядеть так:
exp: NUMBER
| variable AFFECT exp { $$ = $3; var[ctr][0]="$1"; var[ctr][1]=$3; ctr++; }
| variable { $$ = lookupVar($1); }
И определить lookupVar для поиска строки $ 1 в таблице