【发布时间】:2010-07-24 11:14:08
【问题描述】:
我有一个类似于 javascript 的最小玩具语言。我生成了一个 AST 来尝试一些优化技术,比如逃逸分析、类型推断。我尝试了一些方法,例如概括运算符令牌而不是每个类/函数,在每个节点上保留类型信息......但我仍然觉得我不会去任何地方。处理起来很快就会变得笨拙......
我研究过 lua5、neko、v8,但是……嗯……我肯定不是周围最聪明的人之一。
有没有人有设计 AST 和在 AST 上实现转换的经验,这很容易处理?我会感谢那些让您的生活更轻松的提示和技巧?
(请不要叫我去读龙书,我已经有了。)
【问题讨论】:
-
唯一的问题是“它变得笨拙”。 什么(什么事情,什么动作)变得笨拙?您使用什么工具?
-
我有一个 ast 作为 javascript 对象。例如,当我有一个操作员节点时,我有不太通用的左右字段而不是子数组。我不知道这是否是一个好的选择(例如:推断类型),即使我尝试了另一种方式。
标签: compiler-construction abstract-syntax-tree