— выводится ли (или распознаётся ли, для аналитических грамматик) данная строка (целиком!) данной грамматикой или нет, точка.
Тут я не понимаю. flex даёт этот ответ: либо поток, либо ошибка.
Ну вставили вы правило жадности в грамматику регулярных выражений, что от этого принципиально изменилось? Да, это другой тип грамматики стал, не Хомского. Но это грамматика же, которую тоже можно распознавать.
> Ну это уже совсем "мимо" — с помощью современного flex вон вообще можно выполнять декларативный (!) lexing с мощностью LR(1) / DPDA
Тоже не понял. Ну flex ещё больше выходит за пределы "классических" грамматик Хомского.
> На "классические" грамматики он похож исключительно внешне.
Ну и ладно, казалось бы. Как это мешает нашей двухфазной модели?
> Тут я не понимаю. flex даёт этот ответ: либо поток, либо ошибка. Не "поток", а ответ: да или нет, для всей строки целиком, и всё. > Но это грамматика же, которую тоже можно распознавать. Вы неправильно употребляете термин "распознавание". У него ровно такое значение, как в определении выше, а не какое-то другое, вот и всё. > Тоже не понял. Вам в самом деле стоило бы над этим подумать, мне кажется. Lexer не "говорит" Вам: "да, вся эта программа — корректный token". Он "говорит" Вам: [начиная с этого места в строке] длиннейший префикс, распознаваемый данной грамматикой (или DFA, или DPDA, или...), заканчивается вот тут — несмотря на то, что строка (целиком) этой грамматикой не распознаётся вообще. > Ну и ладно, казалось бы. Нет, не "ладно". PEG распознают контекстно-зависимые языки, и, в то же время (как считается, но доказательства этому нет, насколько я помню), не способны распознать все CFG. Т.е. они "поперёк" иерархии Хомского. > Может быть вас смущает вызов событий при распознавании? Совсем нет.
Обсуждают сегодня