# examples/Eyapplanguageref/Lhs.eyp
# eyapp -C Lhs.eyp
# ./Lhs.pm -t -c '2+3'
# ./Lhs.pm -t -c 'a=3'
%right '='
%left '-' '+'
%left '*' '/'
%left NEG
%token NUM =
%token VAR =
%%
input:
/* empty */
| input line
;
line:
'\n'
| exp '\n'
| exp '' # '' stands for end of input
;
exp:
NUM
| VAR
| %name ASSIGN
VAR '=' exp
| %name PLUS
exp '+' exp
| %name MINUS
exp '-' exp
| %name TIMES
exp '*' exp
| %name DIV
exp '/' exp
| %name UMINUS
'-' exp %prec NEG
| '(' exp ')'
;
%%