问题标签 [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.
c - 推荐保留预处理器指令的 C 前端
我想开始一个涉及转换C代码的项目,但我想包括预处理器指令。我不想通过编写自己的C解析器来重新发明轮子,所以有人知道可以解析C预处理器和C代码并生成可用于重新生成(或漂亮-打印)原始来源?
例如,:
上面的代码应该被解析成一些内存中的表示,可以用来重新生成源。换句话说,它不应该像普通C一样分两个阶段处理,首先处理 PP 指令,然后解析纯C代码。相反,它应该代表包括预处理器变量在内的整个编译时逻辑。
antlr3 - ANTLR3 将一个 int 注入到我的树中
有可能做我在这里尝试的事情吗?或者,也许我接近它错了?
java - 从 AST 生成代码的最佳设计?
我正在研究一个非常复杂的 DSL,我想将它编译成一些高级语言。整个过程是一次学习经历。编译器是用java编写的。
我想知道是否有人知道代码生成器部分设计的最佳实践。我目前已将所有内容解析为抽象语法树。
我正在考虑使用模板系统,但我还没有深入研究这个方向,因为我想先从堆栈溢出中听到一些智慧。
谢谢!
java - 基于 AST 的 Eclipse 搜索
是否有 Eclipse 插件可让您根据项目文件的 Java AST(抽象语法树)进行搜索?“Java 搜索”功能似乎不涵盖以下情况:
“给我所有类中声明为类型‘X’的所有字段”
我可以想象基于 AST 的搜索会带来更多可能性,但我什至不知道这样的插件是否具有实际性能。
更新:正如下面 Kevin 所指出的,Java 搜索功能确实涵盖了我提到的用例。我仍然很好奇是否有人编写了一个允许任意类型 AST 搜索的插件,例如。“获取所有字符串连接”(带有 + 运算符和 StringLiteral 操作数的 InfixExpression)
groovy - Groovy - AST 转换,一个实际的例子
AST 转换在 Groovy 中实现。使用 AST 转换的实际示例是什么?
java - 将 Antlr 语法树转换为有用的对象
我目前正在考虑如何最好地将使用 Antlr 生成的 AST 转换为可以在我的程序中使用的有用对象。
我的语法(除了学习)的目的是创建一种可执行的(运行时解释的)语言。
例如,我将如何获取一个属性子树并实例化一个特定的 Attribute 类。例如
以下代码用我的语言编写:
将产生以下 AST:
我目前的想法是工厂类可以读取树,提取名称(message
)和类型(STRING
)值(“ Hello stackoverflow
”)。现在,知道了类型,我可以实例化正确的类(例如 StringAttribute 类)并传入所需的属性数据 -name
和value
。
相同的方法可以用于定义工厂,提取定义名称 ( Print
),实例化 Print 类,然后传入从属性工厂生成的属性。
使用更复杂的程序,事情确实会变得更复杂:
非常欢迎任何/所有帮助或想法。非常感谢。
我以前的相关问题(可能有用):
java - AST 在 Eclipse 的搜索按钮中的使用
我想知道 AST(Abstract Syntax Tree) 是如何在 eclipse 的搜索按钮中使用的。谁能给我链接或一些关于它的信息。帮助
c++ - 是否有任何积极维护的工具可以将 C++ 代码转换为 xml?
是否有任何工具可以将 C++ 代码转换为 xml 或其他更容易解析的格式?如果它还可以选择将 xml 转回 C++ 那就太好了。我已经知道 doxygen 的 xml 格式……也许只有我一个人,但我觉得它不是特别有用。
lambda - antlr 和 DLR 一起使用——AST 转换
我有一个通过 ANTLR 生成的 AST,我需要将其转换为与 DLR 兼容的一个(表达式树)。但是,似乎我不能为此使用树模式匹配器,因为表达式树在实例化时需要它们的子树(我无法获得)。什么解决方案最适合我使用?
python - Python AST 处理
我有一个 Python AST [由 ast.parse() 返回]。
我知道这是一个类方法的 AST。
如何找到对同一类的其他方法的所有调用?
基本上,我想收集类似的东西:
对于如下代码片段:
我需要一个接受 AST 并返回在同一类的方法中调用的类的其他方法列表 [方法名称作为字符串] 的函数。