Java的AST构建器?
我正在手工构建一个AST树,用于我的应用程序。目前,我使用标准的OO方法在程序内存中存储了大量数据,这些数据将用于形成AST 我想知道是否已经有框架/代码生成器可以帮助我完成这项任务Java的AST构建器?,java,compiler-construction,abstract-syntax-tree,Java,Compiler Construction,Abstract Syntax Tree,我正在手工构建一个AST树,用于我的应用程序。目前,我使用标准的OO方法在程序内存中存储了大量数据,这些数据将用于形成AST 我想知道是否已经有框架/代码生成器可以帮助我完成这项任务 我不是在找编译器。我不想定义语法,让代码生成器为我生成语法分析器。我打算自己实例化树的节点,我只是在寻找一种更快、更便宜的方法来构建.java文件本身(另外还有节点属性选项,可选的beginVisit()/endVisit()方法等)。我强烈建议您看看Eclipse的。它包括一个非常健壮的AST框架 我的理解是,使
我不是在找编译器。我不想定义语法,让代码生成器为我生成语法分析器。我打算自己实例化树的节点,我只是在寻找一种更快、更便宜的方法来构建.java文件本身(另外还有节点属性选项,可选的
beginVisit()
/endVisit()
方法等)。我强烈建议您看看Eclipse的。它包括一个非常健壮的AST框架
我的理解是,使用此API,您可以访问各种类型的AST节点的所有属性,还可以使用
beginVisit()
和endVisit()
方法创建访问者。这似乎是问题的答案:
MPS的主要目标是允许扩展语言。这是因为
每种现有语言都已经定义了严格的语言语法,
这限制了它的灵活性
扩展语言语法的问题主要是文本
代码的表示。如果我们想使用
不同的语言扩展,每个扩展都有自己的语法
这自然导致了非文本呈现的概念
程序代码。这种方法的一个主要好处是它消除了
代码解析的需要。我们的解决方案是始终使用代码
在抽象语法树(AST)中维护,该树由节点组成
包含属性、子项和引用,并完全描述
程序代码
同时,MPS提供了一种有效的方法来保持代码的编写
像文字一样的方式
在创建语言时,定义代码编辑和编辑的规则
翻译您还可以指定语言类型和系统
限制。这使得MPS能够动态地验证程序代码,并且
因此,使用这种新语言编程变得简单和容易
容易出错
MPS采用生成性方法。您还可以为其定义生成器
他们的语言将自定义语言中的代码转换为可编译语言
用一些常规语言编写的代码。目前,国会议员们尤其关注这一问题
适用于但不限于生成Java代码。你也可以
生成XML、HTML、JavaScript等
你指的是JDT的哪个具体插件?@EngluseDelysium我猜它是()是的,@prunge是正确的,JDT核心就是你要寻找的。那么你知道你想要创建什么AST节点了吗?听起来你想要一个代码生成器,但是生成器必须运行一些输入。您有什么输入来描述所需的AST节点?如果您没有这样的输入,您如何期望生成器或框架帮助“构建.java”文件。(你说的Java文件是什么意思?)。所以我不明白你为什么认为这是对你原来问题的回答。MPS不会给我生成解析器。它将生成我可以在程序中使用的输出文件。