python代码编写将javalang.tree.Node中的节点名称输出至列表中
时间: 2023-06-27 07:05:45 浏览: 146
可以使用javalang库来解析Java代码,然后使用递归函数将所有节点名称输出至列表中。
以下是一个示例代码:
```python
import javalang
def get_node_names(node, names):
names.append(node.__class__.__name__)
for child_node in node.children:
if isinstance(child_node, javalang.tree.Node):
get_node_names(child_node, names)
# 解析Java代码
source_code = """
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
"""
tree = javalang.parse.parse(source_code)
# 获取所有节点名称
node_names = []
get_node_names(tree, node_names)
print(node_names)
```
该代码会输出以下结果:
```
['CompilationUnit', 'ClassDeclaration', 'BlockStatement', 'MethodDeclaration', 'FormalParameter', 'Type', 'BlockStatement', 'ExpressionStatement', 'MethodInvocation', 'MemberReference', 'MemberReference', 'Primary', 'Literal', 'SimpleName']
```
其中,`CompilationUnit`表示整个Java文件的根节点名称,`ClassDeclaration`表示类定义节点名称,`BlockStatement`表示代码块语句节点名称,`MethodDeclaration`表示方法定义节点名称,`FormalParameter`表示形参节点名称,`Type`表示类型节点名称,`ExpressionStatement`表示表达式语句节点名称,`MethodInvocation`表示方法调用节点名称,`MemberReference`表示成员引用节点名称,`Primary`表示主要表达式节点名称,`Literal`表示字面量节点名称,`SimpleName`表示简单名称节点名称。
阅读全文