OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Март, 2024 02:10

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




Начать новую тему Ответить на тему  [ Сообщений: 180 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 9  След.
Автор Сообщение
СообщениеДобавлено: Среда, 27 Январь, 2010 17:07 

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 27 Январь, 2010 17:08 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
igor писал(а):
Как по Вашему сканер должен понять что это две лексемы "name" и "56", а не одна лексема "name56"? Пробельный символ между "name" и "56" устраняет неопределённость, делает синтаксис детерминированным
Чего-то мне кажется, что вы ошибаетесь.
Если исходить ТОЛЬКО из написанного Вами, то и сейчас - НИКАК. Ибо у Вас "повторение" имеет право (и должно иметь это право) быть пустышкой.
Вот я все время Вам твержу, что для возможности такого разделения нужна допонительная информация (т.е., не содержащаяся в написанных РБНФ-выражениях), а Вы мне не верите.
Нужна-нужна, и называется она: правило "самой длинной лексемы" :D

Ну а теперь про Ваш файл....
Самое первое, что я понял, так это то, что у нас с Вами какое-то разное понимание FOLLOW, и на фига он нужен.
Вашего понимания я до конца не осознал, но как-то оно больше похоже на LAST...
А нафига нам LAST-то ??? Нам нужно множество символов, которые допускает определенный нами синтаксис (весь целиком, а не только его определение), которые могут следовать ПОСЛЕ нужного нам нетерминала.
Зачем ??? Это иногда (не всегда, бывает и все банальнее) нужно для проверки 3-го правила (для "повторов" и "необязательностей") Вирта на стр 29:
Цитата:
Множества начальных символов exp и символов, которые могут следовать за K, не должны пересекаться
В том случае, когда эта "конфигурация" является последней в определении нетерминала - мы должны озадачиться множеством FOLLOW для него.
Это я так все понял. Правильно/неправильно - давайте обсуждать. Глядишь, и более старшие коллеги чего подскажут...
А пока я изложу далее свое понимание "этого" по Вашему тексту, чтобы база для обсуждения была более подробной, чем вышеприведенная фраза.

1) Нетерминал lexeme. Первые скобки с альтернативой
Да нет вопросов - множества FIRST для разных альтернатив действительно не пересекаются. Пока :wink:
Это я к тому, что Вы просили "ткнуть носом" на недетерминированность. В смысле, мне было бы интересно посмотреть, как бы Вы вводили сюда нетерминал char=digit{hexdigit}"X". Или hex-альтернативу для number=digit{hexdigit}"H".
[философское отступление]Фразу Вирта про предпочтительность детерминированной лексики я понимаю как возможность определить таковые константы, например, как в Дельфи: number="$"hexdigit{hexdigit}, или number="#"digit{digit}. Ну да, можно. А можно и не определять - не настолько большой кошмар "недетерминированность". Можно сказать - вообще не кошмар.
Спрашивается, зачем Вирт употребляет детерминированность для лексики ??? Мне представляется, что только для педагогических целей: прозрачное отражение в конечные коды. А есть еще и задача понимаемось/понятность/надежность исходного кода нами, человеками.
Все точно так же, как в языках программирования. Самое прозрачное отражение в целевые коды делает ассемблер!!!
А мы, человеки, продолжем беспокоиться о каких-то там ЯВУ :)
Ну вот, приводил же уже
Код:
"<"                  {... RETURN lxLT}
"<="                 {... RETURN lxLE}
- все просто как топор. Но ведь можно написать и как-то хитромудро "<"["="], и куда при этом вклеивать action, и как сей патерн обозвать - тоже ведь вопрос.
А результат-то будет один и тот же (если постараемся).
Можно даже точно сказать следующее (Илья упоминал ведь про это): Всякий НКА, для которого не надо никакие правила проверять, можно привести (ручками - тоже нетрудно, между прочим, и у дядюшки Ахо примеры про это есть) к ДКА. Так для него тоже никаких правил проверять не надо, но уже потому, что они выполняются по самой процедуре построения.
Из этого ДКА можно сразу написать код.
А можно, глядя на диаграму переходов, и написать эквивалентные регулярные выражения. Тут основная трудность будет в придумывании имен... Сочинять будем всякие там "классы лексем", и т.п..
Будут ли эти регулярные выражения настолько же понятны, как и исходные, из которых и делали НКА ???
Очень сомневаюсь (хотя чем черт не шутит)... К примеру, Ваших терминов про "классы лексем", и различия смежду токенами и лексемами - я до сих пор вкурить не могу :)
[/философское отступление]

2) Нетерминал lexeme. Пропуски пробелов и комментариев
Смотрим правил 3 и спрашиваем себя: какие это такие символы "могут следовать за K".
Вот в моем понимание, это ничто иное, как FOLLOW(lexeme)
Чему он равно ??? А фиг его знает !!! :D
Помните, Вы говорили, что лексер - это тот же самый парсер ??? Так для парсера такие вопросы не возникают. А если и возникнут, то FOLLOW - это просто пустышка. Все файл закончился.
Т.е., я готов согласиться, что это тот же самый парсер, если наша задача, не более, чем ответить на вопрос: является ли нашей лексемой (одной!!!) содержимое этого файла.
В этом случае все тип-топ. Но ведь нас же интересует возможность разделения name56 на две лексемы ???
Ну предположим (хотя я понимаю, что фигня это), что за одной лексемй сразу же следует другая.
Тогда FOLLOW(lexeme)=FIRST(lexeme) - и я опять выражу сомнение, в том, что множества FIRST(lexeme) и FIRST(comment) не пересекаются.
Какие у меня получаются варианты для "большого текста": либо правило 3 не выполняется, либо я вообще не могу ответить на этот вопрос.

3) Нетерминал ident. Повторы в нем
Опять правило 3. Опять "символы, которые могут следовать за K". И это FOLLOW(ident). Чтобы смекнуть про содержание этого множества, мы должны проанализировать все вхождения этого нетерминала в наш синтаксис. Ну да, и видим, что он входит только в lexeme. Применяем правило 2, и получаем, что FOLLOW(ident)=blank+FIRST(comment)+FOLLOW(lexeme). Про FOLLOW(lexeme) см. выше. И выводы - те же, несмотря на идиотизм ситуации.

4) Нетерминал number. Повторы в нем
Можно повторить предыдущий пункт слово в слово. Не, ну заменить ident на number, конечно же :)

5) Нетерминал string. Повторы в нем (альтернатива совершенно непроблематична - правило один выполняется слишком очевидно)
Здесь по-проще. "Символ, который может следовать за K" слишком очевиден. Но анализ (типа супер въедливость) вскрывает ошибку: кавычки таки содержатся в множестве char. Но это легко исправимо.

6) Затрону таки нетерминал comment
Ибо нарисован он неправильно, а я об этом уже заикнулся ранее.
Так вот, символ, следующий за {sym} - это "*"
Пересечение sym и "*" - не пусто => правило 3 невыполняется


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 27 Январь, 2010 18:29 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Valery Solovey писал(а):
У Вас в формуле, описывающей идентификатор (к примеру), указывается набор допустимых символов для порождающей грамматики. То есть, с помощью формулы можно получить множество идентификаторов. Полное множество. Без лишних объектов, которые не являются идентификаторами.

Пробел в формулу не входит, значит при построении идентификатора использовать его нельзя. Значит, лексический анализатор, наткнувшись на пробел, будет знать, что этот символ не является частью текущей лексемы. Значит, текущая лексема закончилась.
Совершенно верно. Ну и что?

Я вынужден персонально для Вас и для Peter Almazov сделать такое заявление относительно имён нетерминальных символов в моём файле:

1. lexeme - это не "лексема", а "лексема и возможно следующий за ней разделитель лексем".
2. ident - это не обязательно только "идентификатор", но возможно "ключевое слово".
3. number - это не "число", а "числовой литерал".
4. string - это не "строка" (строковая переменная), а "цепочка символов" (строковая константа).


Вот, уж, не думал, что мне придётся давать такие разъяснения! Вы можете взамен моих имён нетерминалов придумать свои (например, что-то типа numeric_literal вместо number, и т.д.), но сути это не меняет. Могу только посоветовать вам (да и себе тоже, не помешает :) ) развивать абстрактное мышление.

Valery Solovey писал(а):
P.S. Если формальные языки лишены смысла, то их использование и результат их использования тоже лишены смысла.
Опять-таки, совершенно верно! Но языки программирования не являются формальными, так как их синтаксические конструкции несут определённый смысл. Ценность формальных языков в том, что при рассмотрении синтаксиса языков программирования мы можем абстрагироваться от семантики языка (помните мой совет про абстрактное мышление?), и применить методы, разработанные для формальных языков.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 27 Январь, 2010 18:33 

Зарегистрирован: Пятница, 24 Апрель, 2009 16:28
Сообщения: 563
Откуда: Москва
igor писал(а):
Я вынужден персонально для Вас и для Peter Almazov сделать такое заявление
В этом уже нет необходимости.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 27 Январь, 2010 19:14 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Galkov писал(а):
igor писал(а):
Как по Вашему сканер должен понять что это две лексемы "name" и "56", а не одна лексема "name56"? Пробельный символ между "name" и "56" устраняет неопределённость, делает синтаксис детерминированным
Вот я все время Вам твержу, что для возможности такого разделения нужна допонительная информация (т.е., не содержащаяся в написанных РБНФ-выражениях), а Вы мне не верите.
Нужна-нужна, и называется она: правило "самой длинной лексемы" :D
Нет нужды вводить правило "самой длинной лексемы", потому что оно естественно выводится из РБНФ.
Спецификатор повторения {...} в РБНФ означает "может быть повторено любое число раз, включая ноль". Пусть дана входная последовательность "name56...". После того как лексический анализатор скушает первую букву, а затем, допустим, ещё 3 буквы, у него НЕТ ОСНОВАНИЙ для того, чтобы останавливаться! Ведь в спецификаторе повторения не говорится, что "должно быть повторено 3 раза и ни разом больше".

Точно также можно было бы потребовать ввести такое правило:
"Если сканер прочитал между лексемами три пробела подряд, то он должен проверить не следуют ли дальше ещё пробелы".

Ну, теперь Вы понимаете, что правило "самой длинной лексемы" хоть и верное, но, строго говоря, является лишним.

PS: Всё это мне слегка напоминает законодательство США, в котором до сих пор не отменён закон двухсотлетней давности о том, что запрещено убивать негров в субботу до полудня. :) (За детали не ручаюсь)
Правильно! Действительно, нельзя убивать негров в субботу до полудня. Но зачем нужен такой закон, если и так нельзя никого никогда убивать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 27 Январь, 2010 19:24 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Peter Almazov писал(а):
igor писал(а):
Я вынужден персонально для Вас и для Peter Almazov сделать такое заявление
В этом уже нет необходимости.
Вы меня пугаете :( . Надеюсь, Вы не собрались вешаться? :(


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 27 Январь, 2010 19:39 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Galkov писал(а):
Смотрим правил 3 и спрашиваем себя: какие это такие символы "могут следовать за K".
Вот в моем понимание, это ничто иное, как FOLLOW(lexeme)
Похоже, что Вы не правильно истолковали правило 3. Или я не правильно истолковал :) . Но об этом позже (постараюсь завтра, но не обещаю).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 27 Январь, 2010 19:52 

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

Обратите внимание на следующий фокус: Ваша строка "name56" удовлетворяет патерну ident number - если ident и number являются НЕТЕРМИНАЛАМИ.
Но не удовлетворяет, если они являются терминалами.
В чем разница ??? Между лексером (который определяет терминалы для парсера) и парсером стоит то самое, навязшее уже на языке, ПРАВИЛО.
Если мы забудем про него, то нет никаких причин, запрещающих перенести определение ident,number в парсер (превратив их тем самым в НЕтерминалы)
Ну вот, мы забыли, и перенесли это определение (ident) в упражнении 4.2 на стр.42-43
Забыл про Правило - получай фашист гранату :)

А ведь я же предупреждал Вас, что проверка правил Вирта в этом упражнении будет очень увлекательной, а Вы молчите :D


igor писал(а):
Похоже, что Вы не правильно истолковали правило 3. Или я не правильно истолковал
Ну дык и я про то же... Тут надо "или что-то делать, или что-то решать" :D
Специально так подробно и пылся писать, чтобы отсветились все подробности понимания/не понимания


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 28 Январь, 2010 10:29 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Galkov писал(а):
igor писал(а):
Пусть дана входная последовательность "name56...". После того как лексический анализатор скушает первую букву, а затем, допустим, ещё 3 буквы, у него НЕТ ОСНОВАНИЙ для того, чтобы останавливаться!
Согласен - нет. Но и ровно также нет оснований, чтобы продолжать.
Основанием для продолжения является: либо "правило самой длинной лексемы", либо детеминированность синтасиса, которая проверяется правилами, приведенными Виртом.
Не торопитесь с выводами. Основания для того, чтобы продолжать - ЕСТЬ (!), и без правила СДЛ и прочего. Сейчас я попробую это Вам (а заодно и себе :) ) доказать методом от противного.

Допустим, что у лексического анализатора нет оснований для того, чтобы продолжать. Тогда остановка произойдёт уже после считывания первого символа идентификатора. Ведь идентификатор, состоящий из одной буквы и так уже является правильным, а оснований для продолжения, как Вы утверждаете, нету.
Таким образом, синтаксическая конструкция letter{letter|digit} вырождается в просто letter. Но такое преобразование не является эквивалентным. Оно приводит совсем к другому языку, в котором все идентификаторы состоят ровно из одной буквы.
Мы не должны принимать утверждения, которые приводят к изменению языка. Значит, исходное утверждение о том, что у лексического анализатора нет оснований для продолжения, не верно!
Этот вывод я получил не прибегая к правилу СДЛ. Это правило следует, например, из продукции для нетерминала ident, а именно из-за наличия в ней конструкции {letter|digit}.

PS: По правилу 3 постараюсь написать вечером. Сейчас уже нету времени.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 28 Январь, 2010 14:51 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Galkov писал(а):
Сказали-то Вы правильно. И это называется правило "самой длинной лексемы"
Но это правило НЕ СЛЕДУЕТ из синтаксиса. Оно привнесено из вне.
Причём здесь "правило"? Здесь же не бывает исключений.

РБНФ - это порождатель, а мы пишем распознаватель. Поэтому, определив по первому символу класс порождённой лексемы, мы в соответствии с правилом порождателя определяем порождённую лексему. Кстати, я не встречал в описании LL(1) требования одноступенчатого (единоразового) определения распознаваемой лексемы. То есть, чтобы класс лексемы после прочтения первого симола обязательно остался таковым и после окончания чтения лексемы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 28 Январь, 2010 15:01 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Galkov писал(а):
Вот я все время Вам твержу, что для возможности такого разделения нужна допонительная информация (т.е., не содержащаяся в написанных РБНФ-выражениях), а Вы мне не верите.
Нужна-нужна, и называется она: правило "самой длинной лексемы" :D
Отчасти это следует из того, что РБНФ описывает правило порождения, а мы занимаемся обратной задачей. А отчасти (это проявляется уже на этапе синтаксического анализа) тем, что РБНФ не описывает семантику в должной мере. Например, из описания структуры модуля не следует, что в начале и конце модуля должен располагаться один и тот же идентификатор. Или что обращение к переменной чужого модуля возможно только при экспорте последней.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 28 Январь, 2010 15:02 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
igor писал(а):
Я вынужден персонально для Вас и для Peter Almazov сделать такое заявление относительно имён нетерминальных символов в моём файле:
Так не надо было давать такие кричащие названия. Назвали бы A или B.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 28 Январь, 2010 15:06 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
О, понял, кто придумал "правило" самой длинной лексемы. Он не до конца понимал саму идею. Хотя реализацию, возможно, знал досконально. Или хотел выпендриться - придумать новый термин.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 28 Январь, 2010 15:14 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Valery Solovey писал(а):
Причём здесь "правило"? Здесь же не бывает исключений

Что бы разобраться причем, давайте сделаем элементарное.
Выше я привел партерн ident number, в предположении, что определения этих НЕтерминалов нам известны, и никаких разночтений по их поводу - у нас нет.

Контрольный выстрел: проходит ли строка "name56" сквозь этот патерн.
Надеюсь, нет сомнений в том, что на этот вопрос возможнв лишь два ответа: ДА, или НЕТ
Мой ответ: ДА. А Ваш :?:

А потом уточним кто больше выпендривается, и кто лучше понимает происходящее.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Лексические тонкости Оберонов
СообщениеДобавлено: Четверг, 28 Январь, 2010 16:09 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Извиняюсь, серединные посты не читал, только проглядывал...
Peter Almazov писал(а):
igor писал(а):
Потому что комментарии не являются лексемами, а спор касался именно лексики языка.
А зачем тогда писать это:
lexeme = (ident | number | string | “(” | “)” | “:=” | “*”) {blank | comment}.
Моё понимание, не обязательно правильное.

В регулярную грамматику, определяющую сканер, не возможно включить вложенные комментарии.

Ошибка заключается в том, что igor берет в качестве словаря грамматики литеры исходного текста. Нужно брать как словарь множество {ЗначимыеЛитеры, blank}, поток которых выдаёт фильтр (сканер литер... как угодно) исходного текста. Его работу можно строго описать нерегулярной грамматикой.

ИгнорируемыеЛитеры = ...
НедопустимыеЛиетры = ...
blank = { ' ' | line | comment | ... }.
comment = ...
...
Придется выделять в кач. нетерминалов цепочки литер (строковые константы), т.к. внутри них не может быть комментариев.

Реализация сканера Оберона объединена с этим "фильтром" в целях оптимизации.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 28 Январь, 2010 16:23 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
>Что бы разобраться причем, давайте сделаем элементарное.
>Выше я привел партерн ident number, в предположении, что определения этих НЕтерминалов >нам известны, и никаких разночтений по их поводу - у нас нет.

Слово "правило" предполагает возможность его невыполнения.

А "самая длинная лексема" появилась в виду того, что предполагается, будто РБНФ описывает распознающую грамматику. То есть прочли n символов - это текущая лексема. Прочли ещё один символ. Если он подпадает под правило грамматики, то "удлинним" нашу лексему ещё на 1. А на самом деле лексема - это то, что получилось в конце. Она не самая длинная, а та самая.

Поэтому мой ответ тоже "да".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 29 Январь, 2010 17:18 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Valery Solovey писал(а):
Прочли ещё один символ. Если он подпадает под правило грамматики, то "удлинним" нашу лексему ещё на 1
Это противоречит Вашему ДА. Потому что из ДА следует, что по прочтении "символа" мы прекратили читать ident, и начали читать number.

Ну а изложение Вашего понимания происходящего (в противовес пониманию вводивших правило СДЛ) могут лишь улыбку вызвать.

Прочитавши из текста (например) три единички мы вовсе не читаем лексему number. На самом деле, мы читаем три лексемы: number, hexnumber (отличается от предыдущего действиями по приготовлению некоторых таблиц), и char.
Принявши далее буковку "A", первый вариант отваливается, а два другие имеют место быть.
Ваше ДА означало бы, что лексер имеет право вернуть в этом случае number с последующим ident.
Вот это и следовало бы из синтаксиса, который определен в терминах РБНФ

Более того, так и будет, если следовать определению синтаксиса, приведенному в приложении A1.
Там в первых двух строках определены НЕтерминалы ident и number.
И это самое ДА сработает по полной программе. Потому что оно на самом деле ДА.
Как минимум, правила детерминированности, приведенные Виртом - не будут выполняться :wink:

Ну как, вопрос "Приче тут СДЛ" все еще актуален :?:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 29 Январь, 2010 22:14 

Зарегистрирован: Пятница, 24 Апрель, 2009 16:28
Сообщения: 563
Откуда: Москва
Вернемся к основам: грамматика порождает язык, который является множеством лексем, например, вида А, АА, ААА, ААА123 и т. п.
У нас обратная задача - решить, порождена ли конкретная лексема ААА123 этой грамматикой. Т.е., внимание!, я принял решение о том, что считать лексемой еще до распознавания. Соображения распознавателя, который построен на основе РБНФ, о длине лексемы меня не интересуют. Я мог бы, например, придерживаться соглашения, что значащими следует считать только первые 8 символов.
Отсюда видно, что вопрос о длине лексемы не связан с РБНФ, никак из нее не выводится.
Так что г-н Galkov прав, правило "самой длинной лексемы" (или не самой длинной) НЕ СЛЕДУЕТ из синтаксиса.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 30 Январь, 2010 07:02 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Peter Almazov писал(а):
Вернемся к основам: грамматика порождает язык ...
Одобрю :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 30 Январь, 2010 08:27 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Peter Almazov писал(а):
Так что г-н Galkov прав, правило "самой длинной лексемы" (или не самой длинной) НЕ СЛЕДУЕТ из синтаксиса.

Совершенно верно! Это правили родилось из практических соображений, причем, насколько я понимаю, в основном при трансляции С++. Ранее я что-то не помню СПЕЦИАЛЬНОГО упоминания об этом правиле.


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

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


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

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


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

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