当我的 AST 只是一个数组数组时,我应该使用访问者吗?
我见过用于遍历 AST 的访客模式。要使用此模式,您需要在 AST 节点对象上添加一个 accept(visitor) 方法。此方法调用visitor.visit(self),后者依次“…
Groovy 中的 AST 转换:创建宏以提供基本构造函数
我想制作一个宏,本质上将其扩展 @WithBasicConstructor class Person { private String name private String address } 为: class Person { private…
通过静态分析检测缺少 if/else 语句
我试图捕获 if 语句中缺少的未处理的 expressiong 条件。 第一个示例 if (a < 5) { // Do something } else { // handled else condition } 第二个…
使用ast获取模块名称
如何使用 ast 获取 python 模块名称?我尝试了以下方法来获取模块节点,但看起来它没有名称信息: class v(ast.NodeVisitor): def visit_Module(self,…
如何在python源代码中检测I/O(I/O的标准库方式)
我正在为我最后一年的项目的一小部分 Python 代码构建一个优化编译器。我要做的第一件事是测试变量是否参与或导致 I/O。如果我要静态地跟踪众所周知的…
使用 Python ast 模块访问语法树中的节点
我正在玩 python ast(抽象语法树)。 我编写了以下内容,它访问了 AST 的所有节点。 import ast class Py2Neko(ast.NodeVisitor): def generic_visit…
我如何将 Ripper 的 AST 重新编译回 Ruby 代码?
Ripper 是 Ruby 1.9 附带的解析库。它将 Ruby 代码转换为 AST,如下所示: pp Ripper.sexp("def foo yield :a return 1 end") #=> [:program, [[:de…
使用类型绑定创建编译单元
我正在使用 AST API,我正在尝试创建一个编译具有类型绑定的单元。我编写了以下代码: private static CompilationUnit parse(ICompilationUnit unit)…
如何创建给定形状的 antlr 树?
我有一个 antlr 语法,它有这样的规则: rule: ID (COMMA ID)* 其中 ID 是用于匹配典型变量名称的词法分析器规则,逗号是匹配逗号的词法分析器规则。…