问题标签 [abstract-syntax-tree]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1180 浏览

c - 推荐保留预处理器指令的 C 前端

我想开始一个涉及转换C代码的项目,但我想包括预处理器指令。我不想通过编写自己的C解析器来重新发明轮子,所以有人知道可以解析C预处理器和C代码并生成可用于重新生成(或漂亮-打印)原始来源?

例如,:

上面的代码应该被解析成一些内存中的表示,可以用来重新生成源。换句话说,它不应该像普通C一样分两个阶段处理,首先处理 PP 指令,然后解析纯C代码。相反,它应该代表包括预处理器变量在内的整个编译时逻辑。

0 投票
1 回答
56 浏览

antlr3 - ANTLR3 将一个 int 注入到我的树中

有可能做我在这里尝试的事情吗?或者,也许我接近它错了?

0 投票
3 回答
8249 浏览

java - 从 AST 生成代码的最佳设计?

我正在研究一个非常复杂的 DSL,我想将它编译成一些高级语言。整个过程是一次学习经历。编译器是用java编写的。

我想知道是否有人知道代码生成器部分设计的最佳实践。我目前已将所有内容解析为抽象语法树。

我正在考虑使用模板系统,但我还没有深入研究这个方向,因为我想先从堆栈溢出中听到一些智慧。

谢谢!

0 投票
3 回答
776 浏览

java - 基于 AST 的 Eclipse 搜索

是否有 Eclipse 插件可让您根据项目文件的 Java AST(抽象语法树)进行搜索?“Java 搜索”功能似乎不涵盖以下情况:

“给我所有类中声明为类型‘X’的所有字段”

我可以想象基于 AST 的搜索会带来更多可能性,但我什至不知道这样的插件是否具有实际性能。

更新:正如下面 Kevin 所指出的,Java 搜索功能确实涵盖了我提到的用例。我仍然很好奇是否有人编写了一个允许任意类型 AST 搜索的插件,例如。“获取所有字符串连接”(带有 + 运算符和 StringLiteral 操作数的 InfixExpression)

0 投票
3 回答
1580 浏览

groovy - Groovy - AST 转换,一个实际的例子

AST 转换在 Groovy 中实现。使用 AST 转换的实际示例是什么?

0 投票
4 回答
3473 浏览

java - 将 Antlr 语法树转换为有用的对象

我目前正在考虑如何最好地将使用 Antlr 生成的 AST 转换为可以在我的程序中使用的有用对象。

我的语法(除了学习)的目的是创建一种可执行的(运行时解释的)语言。

例如,我将如何获取一个属性子树并实例化一个特定的 Attribute 类。例如

以下代码用我的语言编写:

将产生以下 AST:

替代文字

我目前的想法是工厂类可以读取树,提取名称(message)和类型(STRING)值(“ Hello stackoverflow”)。现在,知道了类型,我可以实例化正确的类(例如 StringAttribute 类)并传入所需的属性数据 -namevalue

相同的方法可以用于定义工厂,提取定义名称 ( Print),实例化 Print 类,然后传入从属性工厂生成的属性。

使用更复杂的程序,事情确实会变得更复杂:

替代文字

非常欢迎任何/所有帮助或想法。非常感谢。

我以前的相关问题(可能有用):

  1. 如何制作树解析器
  2. 解决LL递归问题
  3. Antrl3 条件树重写
0 投票
2 回答
155 浏览

java - AST 在 Eclipse 的搜索按钮中的使用

我想知道 AST(Abstract Syntax Tree) 是如何在 eclipse 的搜索按钮中使用的。谁能给我链接或一些关于它的信息。帮助

0 投票
3 回答
352 浏览

c++ - 是否有任何积极维护的工具可以将 C++ 代码转换为 xml?

是否有任何工具可以将 C++ 代码转换为 xml 或其他更容易解析的格式?如果它还可以选择将 xml 转回 C++ 那就太好了。我已经知道 doxygen 的 xml 格式……也许只有我一个人,但我觉得它不是特别有用。

0 投票
1 回答
675 浏览

lambda - antlr 和 DLR 一起使用——AST 转换

我有一个通过 ANTLR 生成的 AST,我需要将其转换为与 DLR 兼容的一个(表达式树)。但是,似乎我不能为此使用树模式匹配器,因为表达式树在实例化时需要它们的子树(我无法获得)。什么解决方案最适合我使用?

0 投票
1 回答
3340 浏览

python - Python AST 处理

我有一个 Python AST [由 ast.parse() 返回]。

我知道这是一个类方法的 AST。

如何找到对同一类的其他方法的所有调用?

基本上,我想收集类似的东西:

对于如下代码片段:

我需要一个接受 AST 并返回在同一类的方法中调用的类的其他方法列表 [方法名称作为字符串] 的函数。