Обход Clang AST с использованием Python - PullRequest
0 голосов
/ 30 марта 2019

Я работаю над использованием Clang Bingings Python для прохождения кода C / C ++ в AST. Как я могу получить структуру AST на основе дерева?Некоторые указатели на то, с чего начать, учебные пособия или что-нибудь в этом отношении будут очень полезны !!!

Я нашел очень полезную работу (Если вы хотите проверить это, вот ссылка: https://www.chess.com/blog/lockijazz/using-python-to-traverse-and-modify-clang-s-ast-tree) и попробовал его код, к сожалению, я не получил полезного вывода.

function_calls = []           
function_declarations = []     
def traverse(node):

    for child in node.get_children():
        traverse(child)

    if node.type == clang.cindex.CursorKind.CALL_EXPR:
        function_calls.append(node)

    if node.type == clang.cindex.CursorKind.FUNCTION_DECL:
        function_declarations.append(node)


    print 'Found %s [line=%s, col=%s]' % (node.displayname, node.location.line, node.location.column)

clang.cindex.Config.set_library_path("/Users/tomgong/Desktop/build/lib")
index = clang.cindex.Index.create()

tu = index.parse(sys.argv[1])

root = tu.cursor        
traverse(root)
...