代码之家  ›  专栏  ›  技术社区  ›  sksamuel

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

  •  0
  • sksamuel  · 技术社区  · 6 年前

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

    当然,我们有表达式,我模型的两种可能的表达式形式是 BinaryExpression FunctionExpression . 我的问题是,既然一个二进制表达式可以建模为一个有两个参数的函数,那么保持这种区别有什么好处吗?

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   rici    6 年前

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

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

    所以这两种样式都是有效的,您必须根据您对AST的预期用途的了解做出选择。