Parse和Translate数学表达式
希望看到的产出:一系列执行期望动作的汇编语句
目标表达式
x = 2*y + 3/(4*z)
single digits
将expression定义为single digit并输出解析它的汇编语句
输入单个数字测试程序通过 |
binary expressions
将expression扩展为二元表达式并输出相应汇编语句.
1+2 or 4-3 or, in general, <term> +/- <term>
输入1+2 Pass |
输入单个数字 Failed |
general expressions
<expression> ::= <term> [<addop> <term>]*
using the stack
1+(2-(3+(4-5)))
由该表达式引出的问题。凡事有记录现场并转而干其他事情的情景,可能都需要Stack。
MULTIPLICATION AND DIVISION
关于优先级的问题,在这里的处理方式中根本就不存在:通过top-down分解、各个击破的方式,优先级问题被化解于无形。
这里只需要将term扩展一下即可:
<term> ::= <factor> [ <mulop> <factor ]*
而这里的factor目前就是single digit。
scheme/call-with-current-continuation (1)