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)
...
Другие вопросы по тегам