我正在使用py-tree-sitter
此代码按顺序遍历整个节点树(代码来自此 github 问题:https ://github.com/tree-sitter/py-tree-sitter/issues/33#issuecomment-864557166 ):
def traverse_tree(tree: Tree):
cursor = tree.walk()
reached_root = False
while reached_root == False:
yield cursor.node
if cursor.goto_first_child():
continue
if cursor.goto_next_sibling():
continue
retracing = True
while retracing:
if not cursor.goto_parent():
retracing = False
reached_root = True
if cursor.goto_next_sibling():
retracing = False
for node in traverse_tree:
print(node)
我正在使用此代码进行语法突出显示,并且此方法不会给出空标记,例如whitespace
和newline
不属于另一个AST
标记的部分。
这是获取树中所有节点的正确方法吗?
谢谢