我正在手工构建AST树以与我的应用程序一起使用。我目前在程序的内存中使用标准的OO方法有很多数据,用于形成AST。
我想知道是否有任何框架/代码生成器可以帮助我完成这项任务。
我不是在寻找编译器编译器。我不想定义语法,让代码生成器为它生成一个解析器。我打算自己实例化树的节点,我只是在寻找一种更快,更便宜的方法来自己构建.java文件(一个加号可以选择节点的属性,可选beginVisit()
/ {{ 1}}方法等)。
答案 0 :(得分:4)
我强烈建议您查看Eclipse的Java Development Tools。它包含一个非常强大的AST框架。
我的理解是,使用此API,您可以访问各种AST节点的所有属性,还可以使用beginVisit()
和endVisit()
方法创建访问者。
答案 1 :(得分:1)
这似乎是问题的答案:
MPS的主要目标是允许扩展语言。这是因为 每种现有语言都已经定义了严格的语言语法, 这限制了它的灵活性。
扩展语言语法的问题主要是文本 代码的呈现。如果我们想要使用,尤其如此 不同的语言扩展,每个扩展都有自己的语法。
这自然导致了非文本表达的想法 程序代码。这种方法的一个主要好处是它消除了 需要进行代码解析。我们的解决方案是始终拥有代码 在抽象语法树(AST)中维护,它由节点组成 与属性,子和引用,并完整描述 程序代码。
与此同时,MPS提供了一种有效的方法来继续编写代码 像文字一样的方式。
在创建语言时,您可以定义代码编辑和规则 渲染。您还可以指定语言类型 - 系统和 限制。这允许MPS动态验证程序代码,并且 因此,使用新语言进行编程变得简单而且简单 容易出错。
MPS使用生成方法。您还可以为其定义生成器 他们的语言将自定义语言中的代码转换为可编译的语言 一些传统语言的代码。目前,MPS尤其如此 生成Java代码的好处,但不仅限于此。你也可以 生成XML,HTML,JavaScript等。