解析器AST-二进制表达式与函数的优势

时间:2018-08-07 11:50:01

标签: parsing abstract-syntax-tree

我已经编写了一种简单的内部SQL风格语言的解析器。这是典型的递归下降解析器。

自然地,我们有一个表达式,我建模的两种可能的表达式形式是BinaryExpressionFunctionExpression。我的问题是,由于可以将一个二进制表达式建模为带有两个参数的函数,因此保持区别有什么好处吗?

也许函数调用通常不是建模为表达式而是语句,但是这里我所有的函数都必须产生一个值。

1 个答案:

答案 0 :(得分:1)

如何选择语言建模完全取决于您自己;这完全取决于您打算如何使用构造的AST。

在二元运算符的求值与具有两个参数的函数的求值之间肯定没有根本的区别。另一方面,演示文稿(大多数语言)存在显着差异。某些操作员具有很好理解的属性,可以在静态分析中使用这些属性,例如查找优化。

因此,这两种样式当然都是有效的,并且您将必须根据对AST的预期用途的了解来进行选择。