【发布时间】:2012-03-05 03:47:01
【问题描述】:
标题很可能与我的真正意思模棱两可,但我有这个问题要做:
考虑包含变量 x、y、z、 和二元运算符 +, * 下面给出。
<expr> -> <term> { + <term> }
<term> -> <factor> { * <factor> }
<factor> -> <var> | ( <expr> )
<var> -> x | y| z
在 Scheme 中编写一个名为 executer 的函数,它接受一个表达式字符串 可从上述文法导出并输出表达式的值, 假设 x、y 和 z 分别为 2、4 和 8。例如调用
(executer "((x * x) + y * (z) + y)")
应该产生 40。您的实施必须确定非法表达并符合要求 “*”优先于“+”。
现在我一直在尝试这样做,但我不知道如何在计划中解决这个问题。我试图自己解决这个问题,但我选择向你们寻求帮助。
任何指向您认为可能有帮助的文档或其他类似代码的链接都会很棒。
提前感谢您为此获得的任何帮助。
【问题讨论】: