Comments 17
Я не эксперт в написании парсеров, но я впервые вижу что в описании грамматики есть пробелы. Из-за этого она кажется переусложнена. Насколько я помню, лексический анализатор должен бить входной поток на лексемы проглатывая пробелы. И потом в дальнейшем обработка идёт только лексем.
Далее я не слишком вдумчиво читал, но удивило что, например, для одного и того-же символа делается попытка с помощью битовых полей закодировать его как разные токены, чего в теории парсеров я не встречал.
Далее я не слишком вдумчиво читал, но удивило что, например, для одного и того-же символа делается попытка с помощью битовых полей закодировать его как разные токены, чего в теории парсеров я не встречал.
0
В мое время ходил анекдот: «Чего только не сделают, чтобы не ходить на овощную базу».
— Берется antlr
— берется C++ target
— генерится код
— профит.
И незачем смотреть на такие дремучие по большей части инструменты как flex, bison, yacc. А вот тут число перечисленных инструментов примерно на глаз около 100. Даже если отобрать только те, которые поддерживают C++, вполне можно было и не велосипедить.
— Берется antlr
— берется C++ target
— генерится код
— профит.
И незачем смотреть на такие дремучие по большей части инструменты как flex, bison, yacc. А вот тут число перечисленных инструментов примерно на глаз около 100. Даже если отобрать только те, которые поддерживают C++, вполне можно было и не велосипедить.
+2
Я тоже недавно сделал парсер для одного простого DSL по работе и в итоге выбрал
github.com/lark-parser/lark (Python)
Также есть замечательная библиотека
github.com/Engelberg/instaparse (Clojure)
github.com/lark-parser/lark (Python)
Также есть замечательная библиотека
github.com/Engelberg/instaparse (Clojure)
0
То же самое вместо разбора руками можно сделать используя регулярку. Станет в разы проще.
-12
На StackOverflow ответ специально для тех, кто парсит xml\html регулярками:
ссылка
ссылка
+10
Если у вас была проблема и вы решили ее регуляркой — теперь у вас две проблемы
+4
Прекрасная работа, но без исходников это выглядит как «я пиарюсь», не более.
Битовая идентификация токенов — интересный подход.
Сам сейчас читаю доки по boost::spirit, для DSL, так как нет свободного времени для «написать с нуля и разобраться во всём самому» :)
Битовая идентификация токенов — интересный подход.
Сам сейчас читаю доки по boost::spirit, для DSL, так как нет свободного времени для «написать с нуля и разобраться во всём самому» :)
0
Зачем вы это засунули в хаб DIY? Следуете худшим образцам местных пиарщиков?
+2
Прекрасная фраза по ссылке выше:
Every time you attempt to parse HTML with regular expressions, the unholy child weeps the blood of virgins, and Russian hackers pwn your webapp.
Every time you attempt to parse HTML with regular expressions, the unholy child weeps the blood of virgins, and Russian hackers pwn your webapp.
0
Парсить мы будем HTML, как простой и всем знакомый язык.
Тема интересная, но почему бы не сделать оговорку, что парсить вы собирались лишь простое подмножество HTML, которое удобно парсить вот таким вот парсером?) В парсинге всамделешнего HTML слишком много нюансов w3c.github.io/html/syntax.html#parsing-html-documents.
+1
Sign up to leave a comment.
Искусство парсинга или DOM своими руками