Compiler construction 比较两个表达式树的语义等价性

Compiler construction 比较两个表达式树的语义等价性,compiler-construction,abstract-syntax-tree,Compiler Construction,Abstract Syntax Tree,我的问题是比较两个表达式树并确定它们在语义上是否等价 背景: 在我的OpenPEARL编程语言的开源编译器中,有 位字符串和字符串的切片,其形式如下: variable.BIT(expr:expr+42) 在这种情况下,“expr”必须计算为相同的值 例如: 让a和b使用运行时已知值的数值变量: Expression1: (a+2)*(b/8) Expression2: (1+a+1)*(b/(4*2)) 为了解决这个问题,我需要计算常量表达式部分(已经完成并工作),规范化这两个树,然后执行

我的问题是比较两个表达式树并确定它们在语义上是否等价

背景:

在我的OpenPEARL编程语言的开源编译器中,有 位字符串和字符串的切片,其形式如下:

variable.BIT(expr:expr+42)
在这种情况下,“expr”必须计算为相同的值

例如:

让a和b使用运行时已知值的数值变量:

Expression1: (a+2)*(b/8)
Expression2: (1+a+1)*(b/(4*2))
为了解决这个问题,我需要计算常量表达式部分(已经完成并工作),规范化这两个树,然后执行递归树比较。通过标准化,我的意思是根据节点的代数属性对节点进行重新排序


欢迎任何想法、提示或讨论

您需要构建一个AST(Asbtract语法树)并对其执行比较。。。ANTLR不会为您这样做,因为Raven已经提到:ANTLR不会促进“解析后”阶段。最好重新标记你的问题,以吸引合适的人群。@Bart:你有什么建议可以重新标记我的问题吗?“Thanx!”MarcelSchaible完成了@巴特·基尔斯:谢谢!