我想用ANTLR构建一个Javascript源处理工具。由于Mozilla的Javascript引擎Spidermonkey已经能够解析Javascript并输出AST(它本身就是一个Javascript对象树),所以我只需要利用ANTLR的树语法功能来解析该AST。我不必创建自己的Javascript源解析器语法。
但问题是,我们如何将外部AST导入ANTLR的树语法可以识别的形式?根据 The Definitive ANTLR Reference ,我很可能需要创建自己的 TreeAdaptor 。但是我应该覆盖哪些方法? Spidermonkey的AST是一个异构树,其中不同的节点类型用于不同的语句。我需要手动将这个异构树映射到一个树形式,ANTLR能够处理所有节点使用单个 CommonTree 类型的树形式。
我的ANTLR目标语言可以是Javascript或任何东西(因为Spidermonkey生成的AST是一个Javascript对象树)。