AST中的一元运算符是树节点吗?

时间:2011-07-11 22:16:22

标签: parsing abstract-syntax-tree

所以我正在尝试为布尔表达式构建和AST。基本上表达式由布尔操作数组成,由AND,OR,NOT和paranthesis分隔。例如:

(true AND false) AND NOT(NOT true)

false AND NOT TRUE OR true

我在C#工作,我有TreeNode的类,它包含表达式的操作数(LHS,RHS)和运算符,我还有树的叶子类,它们保存了布尔值。

我不确定如何表示是一元NOT运算符...我应该使用TreeNode类并仅使用分支吗?我应该创建一个“链接”类,通过一元运算符边连接两个表达式吗?

1 个答案:

答案 0 :(得分:2)

我看到三种可能性:

  • 对于只有一个孩子的NOT节点你应该怎么做(如果你不介意你的树不是二进制的)
  • 为每个节点提供一个属性,指示它是否被否定
  • 或者使用NAND和一个孩子的电子方式是真的。