Как преобразовать токенизированный список в древовидную структуру? - PullRequest
0 голосов
/ 21 апреля 2020

Я пытался работать с шорткодами WordPress в python и создал лексер, который генерирует список токенов. Это пример ввода:

[et_pb_section ]
    <p>dsadsadsad. <a href="https://www.naturvardsverket.se/">Lorem Ipsum</a> Loren ipsum.</p>
    <p>Loren ipsum.</p>
[/et_pb_section]

И вывода:

[[SHORTCODE_OPEN: Tag: et_pb_section attributes: ], [HTML_OPEN: Tag: p attributes: ], Text: dsadsadsad. , [HTML_OPEN: Tag: a attributes: ], Text: Lorem Ipsum, [HTML_CLOSE: Tag: a attributes: ], Text: Loren ipsum., [HTML_CLOSE: Tag: p attributes: ], [HTML_OPEN: Tag: p attributes: ], Text: Loren ipsum., [HTML_CLOSE: Tag: p attributes: ], [SHORTCODE_CLOSE: Tag: et_pb_section attributes: ]]

У меня есть все, что хранится в токене, необходимое для разбора токенов, но мне нужно только построить древовидную структуру Структура словаря для этого в моем парсере. Я подумал, что создание рекурсивной функции - это путь к go, но я не могу понять, как мне это сделать.

Это атрибуты, которые есть в моих классах токенов:

  1. TextToken: text
  2. HTMLToken: тег, открыт / закрыт, атрибуты
  3. ShortcodeToken: тег, открыт / закрыт, атрибуты

Спасибо за любую помощь!

...