Форум сайта python.su
Здравствуйте
Решился написать парсер markdown подобного языка разметки (точнее переписать старую версию), решил взять для этого лесический анализатор (вроде так правильно) вместо регулярок.
Нашел pyparsing и LEPL, выбрал второй. На протяжении двух вечеров читал доку, но не понял, как сделать парсер большого текста, а не только строк особового вида.
Например, вообще непонятно, как в 1 строке вытащить все совпадения, для примера:
в строке
"example *text* with *strong*
Офлайн
aliensЭто не понятно. Что должно получиться при разборе
вытащить все блоки *…*
aliensВ парсерах на уровне лексического анализа обычно и используются регулярки (см например доку по lex). Помоему оно не проще, оно просто первый и неизбежный этап синтаксического анализа.
на регулярках разбор не структурированного текста проще?
Отредактировано doza_and (Март 28, 2012 11:59:53)
Офлайн
doza_andИз текста вычленить блоки *example1*, *example2* (* в markdown используется для выделения текста)
Это не понятно. Что должно получиться при разборе
“** *aaa*bbb* **”
doza_andДа, это я знаю (и по доки LEPL там понятно про это).
В парсерах на уровне лексического анализа обычно и используются регулярки
Офлайн
А вы http://code.google.com/p/python-markdown2/ смотрели? Я не очень понимаю в чем проблема. У вас текст очень большой и не лезет в память? Мне это трудно представить.
aliens. Т.е. проблема в том что долго идет разбор и вы хотите парсить не все, например делать поиск шаблона? На счет LEPL не знаю (похоже там этого нет) а в pyparsing реализован поиск в строке. По моему опыту регулярки обеспечивают быстродействие на порядки больше чем парсеры на интерпретируемых языках.
доставать блоки по определенной логике
Отредактировано doza_and (Март 28, 2012 21:54:33)
Офлайн
doza_andДа, эту реализацию я знаю, она, к сожалению, мало кастомизируется, к тому же хочется свое.
А вы http://code.google.com/p/python-markdown2/ смотрели? Я не очень понимаю в чем проблема. У вас текст очень большой и не лезет в память? Мне это трудно представить
Офлайн