%lexer
%right '='
%left '-' '+'
%left '*' '/'
%left NEG
%%
line:
exp
;
exp:
NUM
| VAR
| VAR '=' exp
| exp '+' exp
| exp '-' exp
| exp '*' exp
| exp '/' exp
| '-' exp %prec NEG
| '(' exp ')'
;
%%
%lexer
%right '='
%left '-' '+'
%left '*' '/'
%left NEG
%%
line:
exp
;
exp:
NUM
| VAR
| VAR '=' exp
| exp '+' exp
| exp '-' exp
| exp '*' exp
| exp '/' exp
| '-' exp %prec NEG
| '(' exp ')'
;
%%