Pull to refresh

Comments 17

Я не эксперт в написании парсеров, но я впервые вижу что в описании грамматики есть пробелы. Из-за этого она кажется переусложнена. Насколько я помню, лексический анализатор должен бить входной поток на лексемы проглатывая пробелы. И потом в дальнейшем обработка идёт только лексем.
Далее я не слишком вдумчиво читал, но удивило что, например, для одного и того-же символа делается попытка с помощью битовых полей закодировать его как разные токены, чего в теории парсеров я не встречал.
В мое время ходил анекдот: «Чего только не сделают, чтобы не ходить на овощную базу».

— Берется antlr
— берется C++ target
— генерится код
— профит.

И незачем смотреть на такие дремучие по большей части инструменты как flex, bison, yacc. А вот тут число перечисленных инструментов примерно на глаз около 100. Даже если отобрать только те, которые поддерживают C++, вполне можно было и не велосипедить.

То же самое вместо разбора руками можно сделать используя регулярку. Станет в разы проще.

UFO just landed and posted this here
Если у вас была проблема и вы решили ее регуляркой — теперь у вас две проблемы

Мне искренне жаль всех тех, кто тупо даже не понял что я имел ввиду под токенизацией при помощи регалярки. Бездари :)

Я принципиально у себя стараюсь не использовать регулярки, мне простительно :-)
Прекрасная работа, но без исходников это выглядит как «я пиарюсь», не более.

Битовая идентификация токенов — интересный подход.

Сам сейчас читаю доки по boost::spirit, для DSL, так как нет свободного времени для «написать с нуля и разобраться во всём самому» :)
На самом деле, код сыроват, поэтому сразу не залил исходники. Если интересно, вот они.
Нормальный такой код…

Поместите ссылку на проект в конце статьи.

PS: я пользовал lexertk, но в силу объективных причин смотрю в сторону spirit, так как при работе с последним не нужно плясать с бубном вокруг выражений типа function(value1, function2(value8, function3()))
Зачем вы это засунули в хаб DIY? Следуете худшим образцам местных пиарщиков?
Прекрасная фраза по ссылке выше:
Every time you attempt to parse HTML with regular expressions, the unholy child weeps the blood of virgins, and Russian hackers pwn your webapp.
Парсить мы будем HTML, как простой и всем знакомый язык.

Тема интересная, но почему бы не сделать оговорку, что парсить вы собирались лишь простое подмножество HTML, которое удобно парсить вот таким вот парсером?) В парсинге всамделешнего HTML слишком много нюансов w3c.github.io/html/syntax.html#parsing-html-documents.
Sign up to leave a comment.

Articles