1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
(
(expr
(term exprp)
)
(exprp
(+ term "ADD" exprp)
(- term "SUBTRACT" exprp)
()
)
(term
(fact termp)
)
(termp
(* fact "MULTIPLY" termp)
(/ fact "DIVIDE" termp)
()
)
(fact
(|(| expr |)|)
(float "PUSH")
(- fact "NEGATE")
)
(float
(opt-sign floatp)
)
(opt-sign
("POSITIVE" +)
("NEGATIVE" -)
()
)
(opt-digits
(digits)
()
)
(digits
("ADD-DIGIT" digit digitsp)
)
(more-digits
("ADD-DIGIT" digit more-digits)
()
)
(digit
(|0|)
(|1|)
(|2|)
(|3|)
(|4|)
(|5|)
(|6|)
(|7|)
(|8|)
(|9|)
)
(opt-exp
("EXP" exp)
()
)
(exp
(eE opt-sign "CLEAR" digits)
)
(eE
(e)
(E)
)
(opt-.
(. "POINT" opt-digits)
()
)
(floatp
(. "CLEAR" "POINT" digits opt-exp)
("CLEAR" digits opt-. opt-exp)
)
(digitsp
(more-digits)
()
)
)
|