Правильная визуализация абстрактного синтаксического дерева в python? - PullRequest
0 голосов
/ 08 апреля 2020

Я создал визуализатор для модуля ast (абстрактное синтаксическое дерево), где можно просматривать в дереве решений их функции Python AST.

Что я хочу знать, так это то, является ли это визуальное представление точным :

# test function

def more_hello():
    for i in range(10):
        print('hello world!')

Выходной JSON формат more_hello в Python AST:

# output JSON of more_hello in Python AST

{'_PyType': 'Module',
 'body': [{'_PyType': 'FunctionDef',
           'args': {'_PyType': 'arguments',
                    'args': [],
                    'defaults': [],
                    'kw_defaults': [],
                    'kwarg': None,
                    'kwonlyargs': [],
                    'vararg': None},
           'body': [{'_PyType': 'For',
                     'body': [{'_PyType': 'Expr',
                               'value': {'_PyType': 'Call',
                                         'args': [{'_PyType': 'Str',
                                                   's': 'hello world!'}],
                                         'func': {'_PyType': 'Name',
                                                  'ctx': {'_PyType': 'Load'},
                                                  'id': 'print'},
                                         'keywords': []}}],
                     'iter': {'_PyType': 'Call',
                              'args': [{'_PyType': 'Num', 'n': 10}],
                              'func': {'_PyType': 'Name',
                                       'ctx': {'_PyType': 'Load'},
                                       'id': 'range'},
                              'keywords': []},
                     'orelse': [],
                     'target': {'_PyType': 'Name',
                                'ctx': {'_PyType': 'Store'},
                                'id': 'i'}}],
           'decorator_list': [],
           'name': 'more_hello',
           'returns': None}]}

и, наконец, следующее дерево решений AST выглядит следующим образом: more_hello Python AST decision tree

Это выглядит правильно? Я заметил, что есть две двойные строки, например, «Имя» имеет две (отношения?) К «Загрузить».

...