Я пытаюсь токенизировать следующий ввод в Python:
text = 'This @example@ is "neither":/defn/neither complete[1] *nor* trite, *though _simple_*.'
Я хотел бы произвести что-то вроде следующего, избегая использования регулярных выражений:
tokens = [
('text', 'This '),
('enter', 'code'),
('text', "example")
('exit', None),
('text', ' is '),
('enter', 'a'),
('text', "neither"),
('href', "/defn/neither"),
('exit', None),
('text', ' complete'),
('enter', 'footnote'),
('id', 1),
('exit', None),
('text', ' '),
('enter', 'strong'),
('text', 'nor'),
('exit', None),
('text', ' trite, '),
('enter', 'strong'),
('text', 'though '),
('enter', 'em'),
('text', 'simple'),
('exit', None),
('exit', None),
('text', '.')
]
Притворитесь, что вышеперечисленное производится генератором.Моя текущая реализация работает, хотя код несколько отвратителен и его нелегко расширить для поддержки ссылок.
Любая помощь будет принята с благодарностью.
Обновлено для изменения желаемого синтаксисаот сложной структуры вложенных списков до простого потока кортежей.Отступ для нас, людей.Форматирование в тексте ссылки в порядке.Вот простой синтаксический анализатор , который генерирует искомый результат лексинга, но по-прежнему не обрабатывает ссылки или сноски.