> -- Peter Almazov писал(а):
> Несколько сумбурно изложено, трудно читатьНу возможно...
Дык: на любой Ваш вопрос - любой наш ответ

> -- Peter Almazov писал(а):
> Где и когда она существовала, хорошо привести бы ссылкиВсегда существовала. На то она и "сущность", что для существования ей нет необходимости в наличии ссылок.
Нет у меня ссылок.
Не виноват я в том, что все Великие пишут, что сканер нужен не более, чем для удобства.
А это неправда: он нужен для ликвидации неоднозначности разбиения исходного текста на лексемы. И ссылок на это у меня нет.
И на правило СДЛ нет у меня ссылок, что оно применяется всегда и везде (и в Coco - в том числе). Но оно применяется. Про него вообще, только у дядющки АхО упоминание вскользь есть, при описании конкретного инструмента LEX.

Соглашусь, с падежами у меня проблемы... Не только "существовала", но и сейчас живет и здравствует.
Например, когда Вы,Peter, писали:com = cbeg {char|com} cend- "она" тоже существовала (btw: к вопросу "Кто - мы").
Что сие означает? Означает то, что что сканер, по принятии лексемы cbeg, переключается винойрежим, в котором принимаютсятолько(в отличие от основного режима) лексемы cbeg, char, cend. И никаких других! По принятию последней - возвращается в основной (семантическое действие).
Ну или по другому (если уж очень хочется применить кс-грамматику): семантическим действием лексемы cbeg является вызов парсера выраженияcom1 = {char|(cbeg com1)} cend, использующего свой сканер с набором лексем лишь - cbeg, char, cend.
Суть не меняется... Просто и парсер и сканер можно заоптимизировать в одну (например) рекурсивную процедуру...
ВСЕ, никакой магии с новыми сущностями COMMENTS, ANY, PRAGMAS, IGNORE, и иже с ними
Без вопросов типа: "а надо ли это"
Что надо-то, если оно уже было. Более правомерен другой вопрос: "а надо ли было ломать основную концепцию?"

Какая концепция - сто раз уже в этом топике писал, вроде бы... Повторю (в смысле, попытаюсь еще раз сформулировать):
Сканер определяется списком патернов (регулярных выражений), каждый в паре со своим семантическим действием (возможно пустым).Каждый патерн имеет принадлежность некому стартовому состоянию(ям)Всегда срабатывает только одно семантическое действие - по правилу СДЛ (и никакому другому!!!). Если длины лексем для разных патернов одинаковые - для первого из них (самых длинных) в вышеозначенном списке. Дальнейшее поведение сканера (возврат токена, выбор следующей лексемы, смена стартового состояния) определяется именно этим семантическим действием.Следующая лексема (после выполнения одной из семантик) начинает проверяться на соответствие только патернам, принадлежащим текущему стартовому состоянию. Которое может быть изменено/установлено предыдущим семантическим действиемВот так устроены ВСЕ сканеры. Даже если об этом не написано. Например, любая из "сущностей" в Coco/R - частная реализация этой одной концепции.
Ссылок у меня нет, но lex-формализм описывает все из этой концепции. Плюс - куча синтаксического сахара.
Фактически, с моей стороны, лишь выкинуто из lex все несущественное (Make it as simple as possible)
Но "много разных стартовых состояний" я выкинуть не могу (but not simpler), даже если это могут позволить себе Мэтры. Дико извиняюсь, конечно же, но у меня и своя голова есть.
Но зато я могу позволить себе посмотреть (проанализировать) результаты такого выкидывания
О чем и доложил вышестоящим постом


> -- Peter Almazov писал(а):
> Вообще-то, если есть критика, хорошо бы привести альтернативуВообще-то, критиковать я не собирался.
А собирался лишь привести факты, подтверждающие объективность утверждения о "неОбероновости" конкретного софта.
И сразу же кого-то обидел
Вообще-то, интересно получается...
Сказал, что сканер устроен очень просто - обиделись.
Сказал, что лексика Оберона недетерминирована - обиделись.
Не Обероновский подход в Coco/R - тоже обиделись.
Типа это моя вина, что именно так и происходит на самом деле...
Давно хочу сказать, что и синтасис Оберона в LL(1) не лезет - уже и боюсь говорить ведь
Но - УРАТеперь у меня есть ссылка на проффесораMössenböck, который говорит тоже самое. Вот ведь что главное на форуме - ссылку на Мэтра найти.
Ощущение такое складывается, что на форуме не технические вопросы обсуждают, а защищают Мэтров от неких нападок неких невежд... Эдакая священная миссия...

Альтернативы... Как я уже сказал, ничего нового, имеющегося в реальном LEX-формализме я не обнаружил.
Но там не Виртовский синтаксис, и супер заточка под C, а вовсе не под Оберон. И генерируемые файлы - под 1500 строк.
((btw: Вот ведь загадка природы - чем можно заниматься в на таком объеме кода, для такой простой задачи, как сканер))

Конкретно для Оберона... Ну вот он - Coco/R. Альтернатива - взять и переделать ему front-end. Не взирая на лица. Но это еще никто не сделал. А чтобы сделать,мне представляется логичным, этот новый (иной) front-end очень внимательно обсудить. Утрясти вопросы "Обероновости"... Ну хорошо, пусть будет - Энштейна
Уж и не знаю, получится ли... Это же не Мэтров от нападок защищать
Кому как, а мне, ожидание сюрпризов (непреодолимыхin this way) от написания какого-нибудьa := "(*)"в какой-нибудь семантике - не нравится.