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



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

自然,我们有表达式,表达式I模型的两种可能形式是BinaryExpressionFunctionExpression。我的问题是,既然二元表达式可以建模为具有两个自变量的函数,那么保持这种区别有什么好处吗?

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

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

当然,二元运算符的求值和具有两个自变量的函数的求值之间没有根本区别。另一方面,(在大多数语言中(表达方式也存在显著差异。某些运算符具有非常好理解的属性,这些属性可以在静态分析中使用,例如查找优化。

因此,这两种风格都是有效的,您必须根据对AST预期用途的了解做出选择。

最新更新