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