The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#%semantic token '*' '='
%token NUM =/([0-9]+(?:\.[0-9]+)?)/ 
%token PRINT =/print\b/ 
%token VAR =/([A-Za-z_][A-Za-z0-9_]*)/ 
%right '=' 
%left '-' '+' 
%left '*' '/' 
%left NEG #%tree
%tree  bypass

%%

line:
      sts <%name EXPS + ';' >
;
sts:
      %name PRINT
      PRINT leftvalue
    | exp 
;
exp:
      %name NUM
      NUM
    | %name VAR
      VAR
    | %name ASSIGN
      leftvalue '=' exp
    | %name PLUS
      exp '+' exp
    | %name MINUS
      exp '-' exp
    | %name TIMES
      exp '*' exp
    | %name DIV
      exp '/' exp
    | %no bypass NEG
      #| %name NEG'-' exp %prec NEG
    | '(' exp ')' 
;
leftvalue:
      %name VAR
      VAR 
;

%%