草庐IT

c++ - 从 C++ 代码中获取人类可读的 AST

为了更好地了解C++语言和语法的一些细节,我希望能够编写一个小型C++程序,并查看编译器从中生成的AST。看起来clang过去有这个功能(-emit-asm),但它已经被删除了。今天有没有简单的方法可以做到这一点? 最佳答案 这里有两个例子,一个简单的和一个讨厌的(C++'s"mostvexingparse")。来自http://talkbinary.com/programming/c/fibonacci-in-c/的简单斐波那契程序解析为C++代码:intfib(intn){if(n==0||n==1)returnn;intfib

c++ - 从 C++ 代码中获取人类可读的 AST

为了更好地了解C++语言和语法的一些细节,我希望能够编写一个小型C++程序,并查看编译器从中生成的AST。看起来clang过去有这个功能(-emit-asm),但它已经被删除了。今天有没有简单的方法可以做到这一点? 最佳答案 这里有两个例子,一个简单的和一个讨厌的(C++'s"mostvexingparse")。来自http://talkbinary.com/programming/c/fibonacci-in-c/的简单斐波那契程序解析为C++代码:intfib(intn){if(n==0||n==1)returnn;intfib

python - 带有元组字符串表示的格式错误的字符串 ValueError ast.literal_eval()

我正在尝试从文件中读取元组的字符串表示形式,并将元组添加到列表中。这是相关代码。raw_data=userfile.read().split('\n')forainraw_data:printabtc_history.append(ast.literal_eval(a))这是输出:(Decimal('11.66985'),Decimal('0E-8'))Traceback(mostrecentcalllast):File"./goxnotify.py",line74,inmain()File"./goxnotify.py",line68,inmainlocal.load_user_fi

python - 带有元组字符串表示的格式错误的字符串 ValueError ast.literal_eval()

我正在尝试从文件中读取元组的字符串表示形式,并将元组添加到列表中。这是相关代码。raw_data=userfile.read().split('\n')forainraw_data:printabtc_history.append(ast.literal_eval(a))这是输出:(Decimal('11.66985'),Decimal('0E-8'))Traceback(mostrecentcalllast):File"./goxnotify.py",line74,inmain()File"./goxnotify.py",line68,inmainlocal.load_user_fi

python - 如何使用 ast.NodeVisitor 的简单示例?

有没有人有一个使用ast.NodeVisitor在Python2.6中遍历抽象语法树的简单示例?我不清楚visit和generic_visit之间的区别,我找不到任何使用googlecodesearch或普通google的示例。 最佳答案 ast.visit--除非你在子类中重写它,当然--当被调用访问类foo的ast.Nodecode>,如果该方法存在则调用self.visit_foo,否则调用self.generic_visit。后者,同样在ast类本身的实现中,只是在每个子节点上调用self.visit(并且不执行其他操作)。

python - 如何使用 ast.NodeVisitor 的简单示例?

有没有人有一个使用ast.NodeVisitor在Python2.6中遍历抽象语法树的简单示例?我不清楚visit和generic_visit之间的区别,我找不到任何使用googlecodesearch或普通google的示例。 最佳答案 ast.visit--除非你在子类中重写它,当然--当被调用访问类foo的ast.Nodecode>,如果该方法存在则调用self.visit_foo,否则调用self.generic_visit。后者,同样在ast类本身的实现中,只是在每个子节点上调用self.visit(并且不执行其他操作)。

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

我正在研究一个非常复杂的DSL,我想将它编译成一些高级语言。整个过程是一次学习经历。编译器是用java编写的。我想知道是否有人知道代码生成器部分设计的最佳实践。我目前已将所有内容解析为抽象语法树。我正在考虑使用模板系统,但我还没有深入研究这个方向,因为我想先从堆栈溢出中听到一些智慧。谢谢! 最佳答案 当我回到编程语言课上时,我们最终使用了基于visitorpattern的发射器。.它工作得很好-只要您的AST与您正在打印的内容相当匹配,就可以很容易地将其重新定位到新的输出语言。 关于ja

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

我正在研究一个非常复杂的DSL,我想将它编译成一些高级语言。整个过程是一次学习经历。编译器是用java编写的。我想知道是否有人知道代码生成器部分设计的最佳实践。我目前已将所有内容解析为抽象语法树。我正在考虑使用模板系统,但我还没有深入研究这个方向,因为我想先从堆栈溢出中听到一些智慧。谢谢! 最佳答案 当我回到编程语言课上时,我们最终使用了基于visitorpattern的发射器。.它工作得很好-只要您的AST与您正在打印的内容相当匹配,就可以很容易地将其重新定位到新的输出语言。 关于ja

c# - 在 C# 中行走 ANTLR AST 的教程?

有人知道在C#中使用ANTLR生成的AST的教程吗?我能找到的最接近的是this,但它并不是很有帮助。我的目标是遍历基于我正在研究的特定领域语言生成的树,并使用这些树来输出生成的C#代码。基于Java的教程也会很有帮助-任何提供如何遍历ANTLRAST的清晰示例的任何内容。 最佳答案 我设法通过修改ManuelAbadia'sarticle末尾的示例来解决这个问题.这是我的版本,我碰巧用它来将解析的代码转换为C#。这些是步骤:实例化ANTLRStringStream或使用您的输入进行子类化(可以是文件或字符串)。实例化您生成的词法分

c# - 在 C# 中行走 ANTLR AST 的教程?

有人知道在C#中使用ANTLR生成的AST的教程吗?我能找到的最接近的是this,但它并不是很有帮助。我的目标是遍历基于我正在研究的特定领域语言生成的树,并使用这些树来输出生成的C#代码。基于Java的教程也会很有帮助-任何提供如何遍历ANTLRAST的清晰示例的任何内容。 最佳答案 我设法通过修改ManuelAbadia'sarticle末尾的示例来解决这个问题.这是我的版本,我碰巧用它来将解析的代码转换为C#。这些是步骤:实例化ANTLRStringStream或使用您的输入进行子类化(可以是文件或字符串)。实例化您生成的词法分