33得票3回答
Lambda表达式的Compile()方法是什么?

我正在尝试理解 C# 中的 AST。我想知道,这个例子中的 Compile() 方法到底是做什么的。// Some code skipped Expression<Func<string, int, int, string>> data = Expression...

32得票1回答
如何输出使用ANTLR构建的AST?

我正在制作一个C语言的静态分析器。 我用ANTLR完成了词法分析器和语法分析器,并生成了Java代码。 ANTLR是否通过options {output=AST;}自动为我们构建AST?还是我必须自己构建树?如果是前者,那么如何输出AST上的节点? 我目前认为,在AST上的节点将用于生成S...

31得票8回答
Python AST 与保留注释

我可以使用以下方法获得没有注释的AST:import ast module = ast.parse(open('/path/to/module.py').read()) 你能展示一个获取保留注释(和空格)的 AST 的例子吗?

27得票3回答
一门面向对象的编程语言的抽象语法树(AST)会是什么样子?

我正在学习AST(抽象语法树),但我看到的所有示例都使用了如下表达式:a + b * c 这可以用类似Lisp的语法表示为:(+ a (* b c) ) 哪个选项相当于: + / \ a * / \ b c 我的问题是,面向对象编程语言中类的抽象语法树是什么样的? ...

27得票3回答
从C++代码中获取可读的AST

为了更好地理解C++语言和语法的一些细节,我希望能够编写一个简单的C++程序,并查看编译器从中生成的AST。目前看起来,clang以前有这个功能(-emit-asm),但是已经移除了。今天有什么简单的方法可以做到这一点吗?

27得票2回答
Python 代码生成器

我希望能够根据AST描述生成Python代码。 我已经对C进行了静态分析,并在Python中构建了AST访问器,因此我相对于操作语法树还是比较自信的,但我从未尝试过代码生成,并正在尝试确定生成Python代码的最佳实践。 具体来说,我希望了解自动代码生成通常是如何完成的,或者任何针对Pyt...

26得票2回答
使用Python将Coq术语在AST形式下转换为波兰式表示法

假设我有一个任意的 Coq 术语(使用 s-表达式/sexp 格式的 AST): n = n + n 我想通过遍历 AST 树(由于 sexp,它只是一个嵌套列表的列表)来自动将其转换为: = n + n n 在 Python 中是否有标准库可以做到这一点? 如果我要写下算法/伪代码...

25得票11回答
C代码中的AST

我想在C源代码上执行一些转换。我需要一个在Linux上的工具,从源代码中生成完整的AST,以便我可以在该AST上应用我的变换,然后将其转换回C源代码。我尝试使用ELSA,但它无法编译。(我正在使用Ubuntu 8.4)。有人能推荐一个更好的工具或应用程序吗?

25得票3回答
从AST生成代码的最佳设计?

我正在研究一个相当复杂的DSL,并希望将其编译成几种高级语言。整个过程都是一个学习经验。编译器是用Java编写的。 我想知道是否有人知道代码生成器部分的最佳设计实践。我目前已将所有内容解析为抽象语法树。 我正在考虑使用模板系统,但我还没有深入研究这个方向,因为我想先听听stackoverf...

24得票5回答
如何在clang中从AST中排除头文件?

我正在使用clang生成AST。 我有以下文件(lambda.cpp)需要解析: #include <iostream> void my_lambda() { auto lambda = [](auto x, auto y) {return x + y;}; s...