Найти - Пользователи
Полная версия: использование лексического анализатора для markdown?
Начало » Python для экспертов » использование лексического анализатора для markdown?
1
aliens
Здравствуйте

Решился написать парсер markdown подобного языка разметки (точнее переписать старую версию), решил взять для этого лесический анализатор (вроде так правильно) вместо регулярок.
Нашел pyparsing и LEPL, выбрал второй. На протяжении двух вечеров читал доку, но не понял, как сделать парсер большого текста, а не только строк особового вида.

Например, вообще непонятно, как в 1 строке вытащить все совпадения, для примера:
в строке
"example *text* with *strong*
вытащить все блоки *…*

Стоит ли заморачиваться или на регулярках разбор не структурированного текста проще? (текст - сообщения в бложеке)
doza_and
aliens
вытащить все блоки *…*
Это не понятно. Что должно получиться при разборе
“** *aaa*bbb* **”
Сложные парсеры нужны если вы хотите использовать рекурсивные определения, например для вложеных скобок

aliens
на регулярках разбор не структурированного текста проще?
В парсерах на уровне лексического анализа обычно и используются регулярки (см например доку по lex). Помоему оно не проще, оно просто первый и неизбежный этап синтаксического анализа.
aliens
doza_and
Это не понятно. Что должно получиться при разборе
“** *aaa*bbb* **”
Из текста вычленить блоки *example1*, *example2* (* в markdown используется для выделения текста)

doza_and
В парсерах на уровне лексического анализа обычно и используются регулярки
Да, это я знаю (и по доки LEPL там понятно про это).

Как-бы основная проблема, как заставить (и можно ли вообще) обрабатывать любой текст и доставать блоки по определенной логике (идущие друг за другом, рекурсивные), а не только определенный DSL, каждая стркоа которого, соответствует полностью “матчеру”
doza_and
А вы http://code.google.com/p/python-markdown2/ смотрели? Я не очень понимаю в чем проблема. У вас текст очень большой и не лезет в память? Мне это трудно представить.
aliens
доставать блоки по определенной логике
. Т.е. проблема в том что долго идет разбор и вы хотите парсить не все, например делать поиск шаблона? На счет LEPL не знаю (похоже там этого нет) а в pyparsing реализован поиск в строке. По моему опыту регулярки обеспечивают быстродействие на порядки больше чем парсеры на интерпретируемых языках.
aliens
doza_and
А вы http://code.google.com/p/python-markdown2/ смотрели? Я не очень понимаю в чем проблема. У вас текст очень большой и не лезет в память? Мне это трудно представить
Да, эту реализацию я знаю, она, к сожалению, мало кастомизируется, к тому же хочется свое.
Проблемы как-бы нет, просто хотел использовать лексический анализатор для этого, но не понимаю, реально ли на такой вещи сделать.

Думаю можно закрыть тему :)
Буду брать регулярки для своей задачи
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB