285得票6回答
使用Python的eval()和ast.literal_eval()的区别

我有一个和代码相关的情况,eval() 函数似乎是一个可能的解决方案。虽然我以前从未使用过 eval(),但我已经了解到它可能带来的潜在危险。因此,我非常谨慎地考虑是否使用它。 我的情况是用户提供输入: datamap = input('Provide some data here: ')...

215得票14回答
解析一个.py文件,读取AST,修改AST,然后写回已修改的源代码。

我想要以编程的方式编辑 Python 源代码。基本上,我想要读取一个 .py 文件,生成 AST,然后将修改后的 Python 源代码写回(即另一个.py文件)。 有一些使用标准 Python 模块解析/编译 Python 源代码的方法,例如ast或compiler。但是,我认为它们都不支持...

129得票9回答
抽象语法树和具体语法树有什么区别?

我一直在阅读与解释器/编译器如何工作有关的内容,而我感到困惑的一个领域是AST和CST之间的区别。我的理解是解析器生成CST, 将其传递给语义分析器将其转换为AST。然而,我的理解是,语义分析器只是确保规则得以遵循。我不太明白为什么它会实际进行任何更改,使其变成抽象而不是具体的。 我是否缺少...

127得票8回答
解析树和抽象语法树(AST)有什么区别?

它们是编译过程的不同阶段生成的吗?还是只是指称同一件事情的不同名称?

98得票6回答
我应该对代码施加哪些模式,以便更容易地将其翻译成另一种编程语言?

我打算开始一个旨在将一种编程语言的代码翻译成另一种语言的副业项目。我开始使用的语言是PHP和Python(从Python到PHP应该更容易入手),但理想情况下,我希望能够相对容易地添加其他语言。计划如下: 这是针对Web开发的。原始代码和目标代码将位于框架之上(我还必须编写这些框架)。这些...

91得票4回答
如何使用ANTLR4创建AST?

我已经搜索了很多关于如何构建AST的内容,但是没找到真正有用的东西。我已经知道ANTLR4不像ANTLR3那样构建AST。每个人都说:“嘿,使用访问者(visitor)!” 但我找不到任何关于如何做到这一点的例子或更详细的解释... 我的语法类似于C,但所有命令都是用葡萄牙语(portuga...

86得票3回答
如何构建抽象语法树

我大致了解AST是什么,但我想知道如何构建它。 如果你有一个语法和一个解析树,你如何构造AST? 如果你有一个语法和一个表达式,你该如何构造AST?

77得票5回答
JavaScript AST是什么,如何使用它?

抽象语法树(简称AST)。我在Github上经常听到将其编译为SpiderMonkey AST的说法。 那么,这是JS语法树的实际标准吗?V8是否使用相同类型的AST? 我该如何与它互动?

63得票3回答
如何使用ast.NodeVisitor的简单示例?

有没有人能提供在Python 2.6中使用ast.NodeVisitor遍历抽象语法树的简单示例?我不太明白visit和generic_visit之间的区别,并且我在Google Code Search或普通Google上找不到任何示例。

58得票4回答
TypeScript:获取语法树

我已经阅读了整个互联网,但找不到有关从TypeScript源代码中获取语法树(就像在Esprima中一样)的示例。我的意思是,我该如何获得像这样的对象(Esprima Parser 示例)。{ "type": "Program", "body": [ { ...