185 похожих чатов

Ну тогда можно тут обсудить, а я вставлю. ## Что такое

лексический и синтаксический разбор?

Очень часто разбор текста и построение из него дерева разбора (parse tree) удобно разбить на две фазы. В первой фазе используется регулярная грамматика (грамматика регулярных выражений), во второй фазе - контекстно-свободная. Это, в принципе, не обязательно, но крайне удобно и быстро.

То есть, в первой фазе текст пропускается через некоторую программу оперирующую исключительно регулярными выражениями, она читает текст программы посимвольно (UTF8 или ASCII символы), составляя из этих символов слова (так называемые tokens). Поскольку грамматика регулярная, дерево вырождено, и, таким образом, поток символов ASCII превращается в поток token'ов. С формальной точки зрения и то, и другое - _символы_, но разных языков.

Во второй фазе поток token'ов разбирается с помощью контекстно-свободной грамматики, превращаясь в нормальное дерево разбора.

Первая фаза называется лексическим разбором, а вторая - синтаксическим или грамматическим разбором. Исторически для этих двух фаз часто используются две разные программы с разными языками описания грамматик. Например связка *lex/yacc* или *Alex/Happy*. Но есть и программы, объединяющие в себе обе фазы с единым конфигурационным файлом, например *antlr4* или *BNFC*.

6 ответов

36 просмотров

Лексер не обязательно регулярный.

Konstantin-Romanov Автор вопроса
suhr
Лексер не обязательно регулярный.

Я не спорю. Там везде как-правило.

Konstantin-Romanov Автор вопроса
suhr
Лексер не обязательно регулярный.

И можно конкретный пример нерегулярного лексера?

Комментарии в паскале

Konstantin Romanov
И можно конкретный пример нерегулярного лексера?

Доллар-строки в PostgreSQL: $mystring$this is an actual string$mystring$.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта