The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Lhs.eyp
%right '=' 
%left '-' '+' 
%left '*' '/' 
%left NEG 

%%

input:
      /* empty */
    | input line  
;
line:
      '\n'
    | exp '\n'  
;
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 ')' 
;

%%