# File examples/eyapplanguageref/Tree.eyp # Compile it with: eyapp -C Tree.eyp # Execution: ./Tree.pm -c 'a=2*b' %{ use Data::Dumper; $Data::Dumper::Indent = 1; %} %token NUM = /([0-9]+(?:\.[0-9]+)?)/ %token VAR = /([A-Za-z][A-Za-z0-9_]*)/ %right '=' %left '-' '+' %left '*' '/' %left NEG %defaultaction { goto &Parse::Eyapp::Driver::YYBuildAST } %% line: exp { print Dumper($_[1]) } ; exp: %name NUM NUM | %name VAR VAR | %name ASSIGN VAR '=' exp | %name PLUS exp '+' exp | %name MINUS exp '-' exp | %name TIMES exp '*' exp | %name DIV exp '/' exp | %name MINUS '-' exp %prec NEG | %name PAREN '(' exp ')' ; %%