OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 12:20

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 46 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: Среда, 17 Март, 2010 23:48 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Galkov писал(а):
Давно хочу сказать, что и синтасис Оберона в LL(1) не лезет - уже и боюсь говорить ведь
Но - УРА :!: Теперь у меня есть ссылка на проффесора Mo"ssenbo"ck, который говорит тоже самое. Вот ведь что главное на форуме - ссылку на Мэтра найти.
Вот Вам для пущего спокойствия ещё ссылка - на профессора Вирта: "Compiler Construction", 7.4, задача 2.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 18 Март, 2010 20:05 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Евгений Темиргалеев писал(а):
Вы сравниваете специально "подрезанный" Coco/R с более мощным построителем сканеров flex
Обратите внимание, слово "специально" - Вы произнесли.
Но если "специально", тогда информация о том, что сделать вложенные комментарии невозможно (in this way) - сознательная дезинформация обществености.
Потому-что невозможно-то стало по-причине "подрезки" возможности ввести стартовое состояние Comment (картинки я уже рисовал, и way там был ровно такой же). По Вашим словам - специально.
Не знаю как Вы, а я о Мэтрах лучше думаю....

Евгений, должен Вам заметить, что предположение о том, что я сравниваю нечто с каким-то flex-ом - являются для меня оскорбительными. Потому-что предполагают у меня слишком банальное мышление.
Мои сравнения идут со Знаниями, которые я получил (методом make it as simple....), в том числе изучая и flex, и Coco/R, и....
Их я изложил в вышестоящем посте.
Для обсуждения, между прочим (в результате которого могли БЫ появиться новые знания). Хотя и не зацепил при этом ни кого из Великих.


Евгений Темиргалеев писал(а):
Для неё сделан более простой инструмент
Не смешите мои подковы :lol:
Разные стартовые состояния - не более, чем + нескольких строк кода, и минус коды некоторых "сущностей", которые после этого станут до смешного ненужными.


Евгений Темиргалеев писал(а):
Для тех простых языков, которые можно описать на Coco/R мы получаем сразу и сканер и парсер. Это, по заявлянию Мёссенбока, легче, нежели использование двух более мощных инструментов для генерации отдельных сканера и парсера и их последующего сращивания. Т. е. оправдывает введение описанных Вами дополнительных сущностей.
С первым согласен на все 100.
Что подтверждается моим же "хоть бери, и сам делай ему правильный front-end"
Это не боле 20% всего кода.... Наверное.
И получаем все то же самое, но для любых LL(1)-языков. И не только LL(1), если вспомнить про Оберон :P

Поэтому со вторым НЕ согласен на те же 100%. Не оправдывает. Ключница водку делала!


Евгений Темиргалеев писал(а):
Т.е. взять язык (для которого средств Coco/R достаточно) и сравнить решения на Coco/R и flex+bison...
Возьмите, как будто кто-то не дает.
Пример у Вас на столе - (Coco)CR.arg
Поправьте его так, чтобы Coco-комментарий не включался внутри семантик. Писал же уже выше...
Утверждение (предположительное): не выйдет ни фига у Вас.
Предвидя вопрос "а надо ли...", отвечу: Надо, Федя, надо!
Ибо, если тебе Компилятор (хоть и компиляторов) имя, имя крепи делами своми :!:
А не вопросами из серии "а надо ли..."


Евгений Темиргалеев писал(а):
было предложено "подробно ознакомиться с результатами исследований" "до того, как делать выводы
И что будет :?:
Неужели мне после такого чтения перестанет быть понятно, как записывать через РБНФ комментарии, семантические действия, как обойтись без ANY ???
Неужели количество семантик литералов уменьшится с трех до одного ???
Это же две принципиально разные работы: изучать существо дела, и копаться в цитатниках. Второй я и не владею как-то...

Евгений Темиргалеев писал(а):
Вот Вам для пущего спокойствия ещё ссылка - на профессора Вирта: "Compiler Construction", 7.4, задача 2
Это не более чем намек.
А вот это - фактический материал:
Цитата:
Even Oberon has constructs that cannot be parsed by looking at their syntax alone. For example, a designator is defined in Oberon as
    Designator = Qualident {"." ident | "^" | "[" ExprList "]" | "(" Qualident ")" }.
where x(T) means a type guard (i.e., x is asserted to be of type T). A designator may be used in a statement
    Statement = … | Designator ["(" ExprList ")"] | … .
Here x(T) can be interpreted as a designator x (a procedure name) and a parameter T. The two interpretations of x(T) can only be distinguished by looking at the type of x. If it is a procedure then the opening bracket is the start of a parameter list, otherwise the bracket belongs to a type guard.
Cocol/R allows control of the parser from within semantic actions to a certain degree. A designator, for example, can be processed in the following way:
Код:
Designator <VAR x: Item> =
  Qualident <x>
  { …
  |                         (. IF x is procedure THEN RETURN END .)
    "(" Qualident <y> ")"   (. process type guard .)
} .
И если внимательно приглядеться к этому хаку, то понимаешь - ноги за такое выдергивать надо, а не специфицировать таковую возможность :D


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 19 Март, 2010 10:52 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Ув. товарщ Galkov, мне с Вами очень трудно общаться, -- моих "вычислительных мощностей" не хватает на понимание Вашего текста. Даже несколько раз прочитав, не возникает ощущения, что я Вас понял (это при том, что наличие ощущения понимания не гарантирует)...

Можно попросить Вас уменьшить объёмы текста, требующего интерпретации?

Мы обсуждаем (в контексте своего понимания) инструменты, методы (технологий компиляции). Мне кажется, личности Мэтров, наши или чьи-то ещё к этому отношения не имеют.
Galkov писал(а):
Не знаю как Вы, а я о Мэтрах лучше думаю.... Хотя и не зацепил при этом ни кого из Великих....


Galkov писал(а):
Это же две принципиально разные работы: изучать существо дела, и копаться в цитатниках. Второй я и не владею как-то...
Когда существо дела изучается по тексту, то для взаимопонимания важно привести исходный текст. Т.к. понять один и тот же текст мы с Вами можем по-разному. Например, Вы верно поняли мысль автора, а я нет. Когда вариант понимания зафиксирован, можно говорить о
1) правильности понимания (текста)
2) полноте/правильности/т.п. информации, появившейся в результате этого понимания.
Именно по-этому, я привожу цитату, потом пишу как её понимаю, и, затем, о своём согласии/несогласии с автором.

Galkov писал(а):
Евгений, должен Вам заметить, что предположение о том, что я сравниваю нечто с каким-то flex-ом - являются для меня оскорбительными.
я не смог верно восстановить Вашу мысль из Вашей её проекции в текст? Для Вас это оскорбительно? Выхода два:
1) Вы перестаёте оскорбляться и поясняете свою мысль, чтобы её поняли правильно.
2) Обсуждение сворачивается.

P.S. По теме отвечу позже..


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 19 Март, 2010 16:11 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Galkov писал(а):
Евгений, должен Вам заметить, что предположение о том, что я сравниваю нечто с каким-то flex-ом - являются для меня оскорбительными. Потому-что предполагают у меня слишком банальное мышление.
Мои сравнения идут со Знаниями, которые я получил (методом make it as simple....), в том числе изучая и flex, и Coco/R, и....
По-всей видимости моё мышление банальнее Вашего. Начиная с viewtopic.php?p=44243#p44243
я был уверен, что мы обсуждаем конкретный инструмент: Coco/R генератор сканера/парсера. И, прежде всего, является ли он более удобным (простым) для решения заявленного класса задач, нежели раздельные инструменты генератор сканера и генератор парсера, предназначенные для решения более широкого класса задач. Конкретно, flex и bison (раз про них шла речь).

Другими словами: насколько удачно удалось Мёссенбоку реализовать описанную в аннотации задумку, в двух словах "Coco/R puts simplicity and efficiency over power."

По-Вашему мнению, какой вопрос мы обсуждаем?

P.S. Касательно viewtopic.php?p=44244#p44244 согласен, что в общем виде моё высказывние "не сделаешь... а оно надо" не верно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 20 Март, 2010 10:33 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Galkov писал(а):
Но если "специально", тогда информация о том, что сделать вложенные комментарии невозможно (in this way) - сознательная дезинформация обществености.
Вы про это?
Coco/Docu/Cocol-Man писал(а):
Comments are difficult to specify with the regular expressions used to denote tokens - indeed, nested comments may not be specified at all in this way.
В конце сказано что вложенные комментарии невозможно описать регулярным выражением. Не согласны?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 20 Март, 2010 13:23 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Евгений Темиргалеев писал(а):
В конце сказано что вложенные комментарии невозможно описать регулярным выражением. Не согласны?
Не только не согласны, но и картинки рисовали
И код на flex-е писали. На flex-е - не потому, что к нему есть страшная любовь, а потому-что больше не на чем...
Было бы очень хорошо написать на Coco...
А мы что видим - дулю с маком !!!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 20 Март, 2010 14:12 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Предположим простой технический вопросик: пользователь Coco хочет сделать в своем компиляторе комментарии, учитывающие строки.
Например, чтобы такое: (* Лексема "*)" является концом комментария *) - корректно работало.
Предположим, что мы "доработали" Coco для таковых возможностей. И тогда это могло БЫ выглядеть так:
Код:
TOKENS<default>
   ...
   "(*".     (. START := comment .)
TOKENS<comment>
   ANY.
   "*)".     (. START := default .)
   '"' {noQuote1} '"' | "'" {noQuote2} "'".
.....

И все. Никаких баек про чрезвычайную трудность, или вообще - невозможность

Ваше главное возражение я понял так - но это же станет монстром, типа гнутых продуктов!!!
Мое - никаких убедительных оснований для такого утверждения НЕТ.
Если хотите, об этом можно попробовать подробнее....


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 20 Март, 2010 21:51 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Galkov писал(а):
Евгений Темиргалеев писал(а):
В конце сказано что вложенные комментарии невозможно описать регулярным выражением. Не согласны?
Не только не согласны, но и картинки рисовали...
Мне кажется, у нас разные трактовки термина "регулярное выражение". Укажите, пожалуйста, определение регулярного выражения, которым Вы руководствуетесь. Если не сложно, запишите комментарии КП этим регулярным выражением в качестве примера.

я руководствуюсь определением:
Построение компиляторов писал(а):
Язык регулярен, если его синтаксис может быть выражен единственным выражением РБНФ.
Требование достаточности единственного уравнения подразумевает, что выражение состоит только из терминальных символов.
согласно этому тут
Coco/Docu/Cocol-Man писал(а):
A token declaration defines ...to denote the structure described on the right-hand side of the declaration by a regular expression (expressed in EBNF). ... The restriction to regular expressions means that it may not contain the names of any other tokens.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 20 Март, 2010 22:34 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Galkov писал(а):
Предположим простой технический вопросик: пользователь Coco хочет сделать в своем компиляторе комментарии, учитывающие строки.
Например, чтобы такое: (* Лексема "*)" является концом комментария *) - корректно работало.
Предположим, что мы "доработали" Coco для таковых возможностей...
Не могу сказать ни да ни нет. Coco/R именно в таком виде был сделан... см. аннотацию, см. заключение. У меня нет опыта работы "with these tools over several years".

1) Насколько предполагаемое требование "сделать в своем компиляторе комментарии, учитывающие строки" является типичным для "many translation tasks, such as the processing of small command languages"???
2) Как отразится изменение описания сканера в предлагаемом Вами альтернативном варианте на решение тех задач, которые решаются на Coco/R???

Поэтому могу сказать только общие вещи:
1) Можно сделать и сравнивать (новый инструмент и исходный). На большом количестве задач. Тогда будет видно, является ли один из вариантов доминирующим или оба могут сосуществовать, каждый оптимальный для своего класса задач.
2) Поискать, может аналогичная модификация уже есть... Стоит поглядеть генератор Alex, заложенный в основу Coco?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 21 Март, 2010 02:45 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Евгений Темиргалеев писал(а):
Мне кажется, у нас разные трактовки термина "регулярное выражение".
Одинаковые, категорически.
Изначально (давно уже) я исходил из определения у дядюшки АхО.
Все дальнейшие определения, которые мне приходилось читать - этому не противоречили. Наиболее простое приведено у Вирта, мне кажется.

Проблема в том, что СКАНЕР, это НЕ есть нечто, определяемое одним регулярным выражением, хотя именно ими и пользуется.
Следовательно, чтобы корректно отвечать на вопрос, чего он может (должен уметь), а чего нет - надо дать определение этой машинки.
И я его и дал - см. "4 пункта" несколькими постами выше. Альтернативных (отличающихся радикально) этому - как-то и не встречал.
И в этом топике - тоже другого никто не дал, хотя и "мое" не оспаривал.
Но не могу дать ссылок на Авторитеты, хотя все это я вовсе не сам придумал. Разве что, цитата из flex в этом посте...
Цитата:
0.8 How the input is matched
When the generated scanner is run, it analyzes its input looking for strings which match any of its patterns. If it finds more than one match, it takes the one matching the most text (for trailing context rules, this includes the length of the trailing part, even though it will then be returned to the input). If it finds two or more matches of the same length, the rule listed first in the flex input file is chosen
Собственно, "что такое сканер" - мы весь топик обсуждаем... Вот Peter-а убедил. А igor свою концепцию "принудительной детерминированности" создал - к моему огорчению


Евгений Темиргалеев писал(а):
У меня нет опыта работы "with these tools over several years"
Ну и что. У меня тоже.
Но я точно знаю, имеющие опыт "over several years" - такие же люди, как и мы. У них тоже свои тараканы встречаются...
Не, ну естественно, не нести первую лабуду, пришедшее в голову, но лишь очень продуманное.


Евгений Темиргалеев писал(а):
1) Насколько предполагаемое требование "сделать в своем компиляторе комментарии, учитывающие строки" является типичным для "many translation tasks, such as the processing of small command languages"???
Такие вопросы есть смысл обсуждать, если предполагаемые положительные изменения ведут к серьезному изменению (отрицательному) каких-то показателей назначения.
Грубо говоря - а не станет ли это монстром, аля гнутые flex+bison
Из-за этих изменений - НЕ СТАНЕТ
Фактически, сегодня каждую лексему сканер обрабатывает, начиная тупо только с нулевого состояния. Предлагается - с состояния, которое хранится в некой глобальной переменной (START). Обычное дело - тот же нуль. Но может быть (если у пользователя появится такая возможность) и Comment, String, и т.п..
И ВСЕ, по большому счету-то. Ну не приведет это к "кошмару"


Евгений Темиргалеев писал(а):
2) Как отразится изменение описания сканера в предлагаемом Вами альтернативном варианте на решение тех задач, которые решаются на Coco/R???
Переписывать придется
Но можно точно утверждать, что всякую из многих исходных сущностей - можно будет изобразить одной (похожей на вышеприведенную)
Но написать можно будет и более "мудрые" вещи - для этого-то и делано.
Да и с портированием под другие язЫки - меньше проблем (в отсутствиии которых в Coco - я пока не уверен) будет


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 21 Март, 2010 03:28 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Евгений Темиргалеев писал(а):
Если не сложно, запишите комментарии КП этим регулярным выражением в качестве примера.
Ну вот :(
Только этим и занимаюсь в топике, что пытаюсь убедить, что Мир устроен проще, чем нам о нем рассказывают.
Конечно же не сложно (про inc/dec Вы знаете, поэтому пусть будет стековый объект SP для разнообразия):
Код:
TOKENS<default>
   ...
   "(*".     (. START := comment .)
TOKENS<comment>
   ANY.
   "(*".     (. SP.Push(START); START := comment .)
   "*)".     (. SP.Pop(START) .)
.....



Припоминая Ваши соображения про возможность использования стековых автоматов в сканере, усложним задачу про "строку в коментарии". Пусть, к примеру, "строка" содержит еще и некие esc-символы:
Код:
TOKENS<default>
   ...
   '"'.      (. SP.Push(START); START := string .)
   "(*".     (. SP.Push(START); START := comment .)
TOKENS<comment>
   '"'.      (. SP.Push(START); START := string .)
   ANY.
   "*)".     (. SP.Pop(START) .)
TOKENS<string>
   '"'.      (. SP.Pop(START); .)
   '""'.     (. (* тут хитрая семантика накопления строки - один символ '"' *)
   ANY.      (. (* тут хитрая семантика накопления строки - по дному символу *)
.....

Ну вот же Вам магазинные автоматы... даже с возвратом "откуда вызвали"
А Вы - "а надо ли оно..." :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 21 Март, 2010 17:00 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Galkov писал(а):
Евгений Темиргалеев писал(а):
Мне кажется, у нас разные трактовки термина "регулярное выражение".
Одинаковые, категорически.
Изначально (давно уже) я исходил из определения у дядюшки АхО.
Все дальнейшие определения, которые мне приходилось читать - этому не противоречили. Наиболее простое приведено у Вирта, мне кажется.


Стоит всё-таки не забывать, что регулярный язык - понятие не из технологий компиляции, а из теории формальных языков. Класс языков, эквивалентный КА. Памяти нет (в отличие от автомата с магазинной памятью). Рекурсивные структуры описаны (и распознаны) быть не могут. Комментарии вложенные, в частности, тоже.

Если некий инструмент позволяет это распознавать, то его описательный формализм уже мощнее регулярного языка.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 21 Март, 2010 21:53 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Galkov писал(а):
Евгений Темиргалеев писал(а):
Если не сложно, запишите комментарии КП этим регулярным выражением в качестве примера.
Ну вот :( ...
То, что Вы изобразили не является регулярным выражением. Следуя определению Вирта, Вы должны записать одно РБНФ выражение. Типа ident = "a".."z" { "a".."z" | "0".."9"}.

В общем виде тов. Ермаков всё сказал...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 21 Март, 2010 22:00 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Galkov писал(а):
Евгений Темиргалеев писал(а):
2) Как отразится изменение описания сканера в предлагаемом Вами альтернативном варианте на решение тех задач, которые решаются на Coco/R???
Переписывать придется
Но можно точно утверждать, что всякую из многих исходных сущностей - можно будет изобразить одной (похожей на вышеприведенную)
Но написать можно будет и более "мудрые" вещи - для этого-то и делано.
я имел ввиду, как отразится на сложности решения. Повторюсь: надо сравнивать...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 22 Март, 2010 00:32 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Евгений Темиргалеев писал(а):
То, что Вы изобразили не является регулярным выражением
А я изображал не некое одно регулярное выражение, а определение Сканера.
Состоящее из пар: рег.выражение---семанитка. В полном соответствии со своим определением сканера (см. выше "4 пункта")
Если у Вас есть иной способ определения сканера - приведите его.

Если Вы скажите, что сканер можно определить одним регулярным выражением (равномощным КА - привет Илье), то вынужден буду спросить: за каким хреном я столько постов в этом топике написал, если их уважаемые коллеги не читают :?:
Нельзя его определить одним регулярным выражением


Евгений Темиргалеев писал(а):
я имел ввиду, как отразится на сложности решения. Повторюсь: надо сравнивать..
Возможно, я опять не понял вопроса.... Но разве это не ответ:
Galkov писал(а):
Фактически, сегодня каждую лексему сканер обрабатывает, начиная тупо только с нулевого состояния. Предлагается - с состояния, которое хранится в некой глобальной переменной (START)
Абсолютно точный ответ может появиться только после реализации. Но что сейчас уже можно утверждать: оснований для беспокойства про монстроидальность - нет никаких.
Или лучше пример кода сканера (от того же проф.Mössenböck) привести :?: В смысле - ДО и ПОСЛЕ....


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 22 Март, 2010 01:05 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Илья Ермаков писал(а):
Если некий инструмент позволяет это распознавать, то его описательный формализм уже мощнее регулярного языка
Присутствие магического слова "семантика" в дополнении к регулярным выражениям - имеет право расширить некую мощность.
Ровно так же, как "семантическая селекция" стражей типов от процедурного вызова - расширяют LL(1) до Оберона
Ну и что, катастрофа случилась что ли :?:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 22 Март, 2010 12:04 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Galkov писал(а):
Евгений Темиргалеев писал(а):
Если не сложно, запишите комментарии КП этим регулярным выражением в качестве примера.
Ну вот :( ...
Galkov писал(а):
Евгений Темиргалеев писал(а):
То, что Вы изобразили не является регулярным выражением
А я изображал не некое одно регулярное выражение, а определение Сканера...
На вопрос viewtopic.php?p=44753#p44753 Вы здесь viewtopic.php?p=44762#p44762 ответили Да или Нет? Меня это интересует...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 22 Март, 2010 12:30 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Евгений Темиргалеев писал(а):
Да или Нет? Меня это интересует...
Ответил: ДА, невозможно описать комментарий ОДНИМ регулярным выражением.
И добавил при этом, что Сканер вообще (не только комментарий) невозможно описать ОДНИМ регулярным выражением.
Т.е., если акцент на слове ОДИН, то это утверждение просто тавтология. Вообще ничего нельзя определить, и комментарий - в том числе. А если несколькими - то это не соответствует действительности.
Несколькими регулярными выражениями - можно. А если эти регулярные выражения имеют еще и семантику (а даже указание пропустить/вернуть - это уже семантика), то и вложенные можно.

Добавлю вот еще...
Евгений Темиргалеев писал(а):
Следуя определению Вирта, Вы должны записать одно РБНФ выражение
Нет. Никому я ничего не должен.
А должен (профессионально!!!) разобраться в Существе Вещей: что такое есть сканер, и каково его назначение.
И если установленная Истина соответствует тому, что говорят классики - Великое им Спасибо, за помощь в выходе на нее.
А если нет - то это проблемма классиков. И тех новичков, которые долгое время будут считать, например, что регулярные выражения для сканера можно писать вместе с синтаксическими уравнениями.

Потому-что нельзя. Даже если Вирт и написал из вместе - все равно нельзя.
Не настолько я слаб головой, чтобы не разобраться в чем-то самостоятельно. И не настолько уж и сложная дисциплина, в конце-то концов.
Да, возможно, это непривычная для Вас парадигма. Но она верная и эффективная


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 22 Март, 2010 13:15 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Galkov писал(а):
Ответил: ДА, невозможно описать комментарий ОДНИМ регулярным выражением. И добавил при этом, что Сканер вообще (не только комментарий) невозможно описать ОДНИМ регулярным выражением.... Несколькими регулярными выражениями - можно. А если эти регулярные выражения имеют еще и семантику (а даже указание пропустить/вернуть - это уже семантика), то и вложенные можно.
В Coco/R сканер определяется декларативно.
Лексема=регулярное выражение;
коменнтарий=особая конструкция, т.к. регулярным выражением невложенный комметарий описать сложно, вложенный невозможно.
...

Если я Вас понял, такое положение дел Вас не устраивает. Вы предлагаете включить в описание сканера действия, управляющие его работой. Это сделает сканер более мощным. Позволит убрать конструкции COMMENT и пр., перенеся их нагрузку на управляющие действия. И сделает описание сканера более сложным, т.к. действия пользователь должен описать сам.

Верно (понял)?

Почему же автор не сделал так? Он пишет: "Coco/R puts simplicity and efficiency over power." Согласен с ним. С Вами - нет. Т.к. Ваше предложение усложнит работу пользователя по определению сканера для типовых задач.

Насколько усложит? Надо сравнивать...

Причём я допускаю, что автор уже сравнил "Coco/R evolved from two predecessors: the scanner generator Alex [Mo"ss86] and the parser generator Coco [ReMo"89]. Their input languages were merged and simplified due to our experiences with these tools over several years". Потому с ним и согласен.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 22 Март, 2010 14:40 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Только сейчас пришло в голову. Coco/R - инструмент для создания компилятора ЯП, не сканера.
viewtopic.php?p=44531#p44531
Galkov писал(а):
Если у нас сканер, это устройство по п.1, всего лишь обремененное правилом СДЛ (которое никуда не делось и сегодня), то сканер - это очень просто.
А если в нем есть ПЯТЬ различных категорий, токены и литералы есть разные сущности, и т.п. - тогда это немыслимо сложная вещь какая-то.
Вы называете лишними для определения сканера сущности

CHARACTERS множества литер алфавита регулярных грамматик токенов
TOKENS нелитеральные терминалы грамматики парсера
COMMENTS комментарии
IGNORE множества игнорируемых литер
PRAGMAS обычно, особые указания компилятору

Насколько эти сущности излишни для определения языка программирования?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 46 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB