PLUS -> "+" MULT -> "*" MINUS -> "-" MOD -> "%" DIV -> "/" CB -> ")" OB -> "(" ## ID -> ([0 - 9])+ ## ## EOL -> \n|\r SPACE -> \s|\t ## start -> { global stack result; print ; } E {print " =========== "; print ; print ; print string(pop(result)); } E -> E {print <[OP>;} {print "+"; print ; print ;} T { result.push(pop(result)+pop(result)); } E -> E {print <[OP>;} {print "-"; print ; print ;} T { result.push(0-(pop(result)-pop(result))); } E -> T T -> T {print <[OP>;} {print "*"; print ; print ; } F { result.push(pop(result)*pop(result)); } T -> T {print <[OP>;}
{print "/"; print ; print ; } F {local int temp; temp := pop(result); result.push((pop(result)/temp)); } T -> T {print <[OP>;} {print "%"; print ; print ; } F {local int temp; temp:=pop(result); result.push(pop(result)%temp); } T -> F F -> E F -> {print <[CONST>;} { print lexeme; print ; print ; result.push(int(lexeme));}