0

我正在使用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)

我正在使用此代码进行语法突出显示,并且此方法不会给出空标记,例如whitespacenewline不属于另一个AST标记的部分。

这是获取树中所有节点的正确方法吗?

谢谢

4

0 回答 0