转载

自己手动编写一个简单的解释器 Part 6

下面是我们升级后的语法:

自己手动编写一个简单的解释器 Part 6

expr 部分和 term 部分和我们在 Part5 里面的一样。这里唯一改变的地方是在 factor 里面,这里的 LPAREN 代表左括号‘(’,RPAREN 代表右括号‘)’,两个括号中间的 expr 代表表达式。

下面是这个 factor 升级后的语法图解,里面包含了可选项。 自己手动编写一个简单的解释器 Part 6

因为这个语法规则的 expr 和 term 两个部分没有改变,这个语法图解跟 Part5 里面的看起来一样:

自己手动编写一个简单的解释器 Part 6

在我们新的语法里面有个很有趣的特点-递归性。如果你想于执行表达式2*(7+3),你需要从expr的起始符号开始,最终你需要再次回头执行原始表达式中的(7+3)。

让我们把2*(7+3)根据语法来进行分解,看看它是如何执行的:

自己手动编写一个简单的解释器 Part 6

说点题外话:如果你需要复习一下关于递归的知识的话,你可以看看 Daniel P. Friedman 和 Matthias Felleisen 合著的   The Little Schemer   这本书,讲的非常好。

正文到此结束
Loading...