lime/examples/calc.lime

25 lines
361 B
Plaintext

%class calc
%start stmt
%left '+' '-'
%left '*' '/'
stmt = exp { echo " -> "; echo $1; echo "\n"; }
| var/v '=' exp/e {
echo "$v = $e\n";
set_variable($v, $e);
}
.
exp = num
| var { $$ = get_variable($1); }
| exp '+' exp { $$ = $1 + $3; }
| exp '-' exp { $$ = $1 - $3; }
| exp '*' exp { $$ = $1 * $3; }
| exp '/' exp { $$ = $1 / $3; }
| '(' exp/$ ')'
.