Как работать с вложенными блоками кода при написании C++ для анализа кода Python?C++

Программы на C++. Форум разработчиков
Anonymous
Как работать с вложенными блоками кода при написании C++ для анализа кода Python?

Сообщение Anonymous »

Мне нужно написать простой парсер для анализа кода Python.
Я понимаю, что мне нужен токенизатор, структура данных, такая как дерево или карта, для хранения моих узлов по мере работы. , но меня ставят в тупик вложенные блоки кода.
Если бы у меня было что-то простое, например

Код: Выделить всё

   if foo:

Я думаю, что справлюсь с этим, потому что я ищу только определенные ключевые слова. Как только они найдены, я сохраняю их как узел.
Поэтому я мог бы написать что-нибудь, чтобы приведенный выше простой код анализировался и генерировал следующий вывод:

Код: Выделить всё

[IF_BLOCK]
[Condition] foo
[Then] statements
Но как мне справиться с подобным?

Код: Выделить всё

if foo:
if bar:
do1()
else:
do2()
if bar2:
do3()
В этом случае у меня должно получиться что-то вроде

Код: Выделить всё

[IF_BLOCK]
[Condition] foo
[Then]      [IF_BLOCK]
[Condition] bar
[Then]      do2()
[IF_BLOCK]
[Condition] bar2
[Then]      do3()
Уточню — это школьный проект. Мне разрешено использовать существующие библиотеки для создания собственного анализатора, но нельзя использовать существующий анализатор.

Подробнее здесь: https://stackoverflow.com/questions/785 ... ython-code

Вернуться в «C++»