解释器模式是抽象语法树的一种形式

时间:2014-10-24 21:20:06

标签: design-patterns abstract-syntax-tree interpreter-pattern

我正在学习GoF模式,维基百科文章中的解释模式示例引起了我的注意:http://en.wikipedia.org/wiki/Interpreter_pattern(我特别关注Java代码片段)。它看起来像一个简单表达式的抽象语法树!关于以AST的形式实现数据处理的解释器模式是什么?

1 个答案:

答案 0 :(得分:0)

从结构上讲,GoF解释器模式(在CS中几乎没有其他解释器使用)与AST类似。

解释器模式通常只有一个动作来评估AST表示的表达式,而许多AST实现提供了遍历树的其他方法。经常在OO AST实现中,遍历结合了访问者模式和双重调度。在LISP中,使用列表运算符遍历AST。通常AST不会做任何事情,但是GoF解释器模式有一些“解释”动作来评估树。

GoF模式将AST和一个解释器结合在同一个东西中,它比更常见的AST方法灵活性差,但有时候只需要它。

'Expression Tree'是更常被称为的,在GoF之前和之后用一个选择不当的名称记录它 - 模式是一个自我评估树,GoF解释器模式中没有解释器。 / p>