pycparser - получение номера строки источника из AST
Я пытаюсь разобрать C-файл с помощью pycparser и пытаюсь получить исходный номер строки из AST, сгенерированного pycparser. Это возможно?
2 ответа
Это возможно с "координировать" объект. Посмотрите на класс координат в plyparser.py
https://bitbucket.org/eliben/pycparser/src/b169b693a194/pycparser/plyparser.py?at=default
Я не мог точно понять, как использовать класс Coord, но, почитав немного эту часть кода, оказалось, что есть.show()
метод для узлов AST, который принимаетshowcoord
логический аргумент; поэтому вы можете написать в своем коде Python:
ast_node.show(showcoord=True)
... и это распечатает структуру узла, аннотированную именем файла, номером строки и номером столбца - что-то вроде:
Decl: my_array, ['const'], [], ['extern'], [] (at my_header.h:41:20)
ArrayDecl: [] (at my_header.h:41:20)
PtrDecl: [] (at my_header.h:41:18)
TypeDecl: my_array, ['const'], None (at my_header.h:41:20)
IdentifierType: ['void'] (at my_header.h:41:14)
...