%token NUM = /([0-9]+)/
%token VAR = /([A-Za-z]+)/

%right  '='
%left   '-' '+'
%left   '*' '/'

%{
        use Data::Dumper;
%}

%%

gram: exp*   { print Dumper($_[1]) }
    ;

exp: exp '+' exp { return ['plus', $_[1], $_[3]] }
   | exp '-' exp { return ['minus', $_[1], $_[3]] }
   | exp '/' exp { return ['slash', $_[1], $_[3]] }
   | exp '*' exp { return ['star', $_[1], $_[3]] }
   | '(' exp ')' { return ['parenthesis', $_[2]] }
   | NUM         { return ['number', $_[1]] }
   | VAR         { return ['variable', $_[1]] }
   | VAR '=' exp { return ['atrib', $_[1], $_[3]]}
   ;

%%