пройти Java AST с помощью рекурсивной функции в Python - PullRequest
0 голосов
/ 16 октября 2018

Я написал рекурсивную функцию в python для обхода AST, созданного с помощью JDT-компилятора, в Eclipse. Я бы прошел по AST-дереву, как это изображение: Это изображение Я получил левое дерево и написал эту функцию:

ast ='MethodDeclaration SimpleType SimpleName String SingleVariableDeclaration SimpleType SimpleName id SimpleName Integer Block ExpressionStatement MethodInvocation SimpleName Log SimpleName debug SimpleName Extracting_method_with_ID:{} SimpleName id ReturnStatement MethodInvocation SimpleName request SimpleName remove SimpleName id SimpleName extractFor'
def traverseTree(token,i):
    if i == len(token)-1:
        return ''
    else:
        i += 1
        return '('+token[0]+traverseTree(token[1:],i)+')'
print traverseTree(astlist,0)

Это приводит к: (MethodDeclaration (SimpleType (SimpleName (String (SingleVariableDeclaration) (SimpleType (SimpleName (ID) (SimpleName (Integer (Block (ExpressionStatement (MethodInvocation (SimpleName (Log))))))))))))))))))))

Не то же самое, что правильное изображение, я запутался, я не могу обработать какую-либо строку или идентификатор, определенный пользователем, и поместить его в правильное место как правильный раздел на этом изображении Это изображение

...