2 回答
TA贡献1951条经验 获得超3个赞
这是我使用的一种方法。
生成示例 Java 文件的可视化 AST,例如,带有您要查找的硬编码表达式的文件。JavaParser 可以输出 DOT 文件(例如blog entry),这是在您感兴趣的 AST 中发现节点的好方法。
我从我的可视化中看到我感兴趣的节点VariableDeclarator带有一个初始化器,所以我按照使用的示例VoidVisitorAdapter并覆盖了相应的visit方法。一个好的 IDE (IntelliJ) 帮助我完成了剩下的工作:
public void visit(VariableDeclarator variableDeclarator, Void arg) {
super.visit(variableDeclarator, arg);
variableDeclarator.getInitializer().ifPresent(expression -> {
expression.ifStringLiteralExpr(stringLiteralExpr -> {/* do something */})
}
TA贡献1853条经验 获得超18个赞
我会尝试创建一个监听器;通过覆盖适当的方法来监听assignment
语句(Java8.g4 中的第 1196 行),例如:
public override void ExitAssignment(Java8Parser.AssignmentContext context); // C#
检查context
通过
•是否assignmentOperator
可以应用于字符串 ( =
, +=
)
• 是否expression
解析为类似CharacterLiteral
或StringLiteral
您可以通过方法context.assignmentOperator()
和获取信息context.expression()
。
添加回答
举报