作者回复: 没有工具。原因:
语义分析的工作比较多,作用域解析、类型检查等等,比较难以统一解决。
而每个语言的个性化差异,最大的就体现在语义方面。词法差异最小,语法次之,语义差异最大。语法差异再大,但都可以用CFG表示,所有都可以统一地解决。但语义的差异,目前还不好用统一的形式化的方法去解决。
比如类型系统,每种语言的设计相差很大,很难用统一的方式来处理。
属性文法是语义分析领域从形式化的角度做得不错的工作了,所以可以基于属性文法实现一些自动的工作。
作者回复: 是的。你看得很细:-)
我这里是偷懒了。因为左值比右值更强,所以我在示例代码里都用的是左值。
我抽空会在语义分析中加上左右值分析的代码:-)