S → E |
E → P E → E + P E → E - P |
P → F P → P * F P → P / F |
F → int F → + F F → - F
F → ( E ) |
private String parseF() { switch (tok.nature) { case Token.SUB: Token op = tok ; step() ; return echo ("0", op, parseF()) ; case Token.ADD: step() ; return parseF() ; case Token.OPAR: step() ; String r = parseE() ; if (tok.nature != Token.CPAR) error(")", tok) ; step() ; return r ; default: return readInt() ; } } |
O → O + int O → int |
S → int + S S → int |
E → O * E → S / |
E → O * S E → S / O |