OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 19 Сентябрь, 2019 13:29

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




Начать новую тему Ответить на тему  [ Сообщений: 46 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: Лексические тонкости Оберонов
СообщениеДобавлено: Понедельник, 25 Январь, 2010 12:51 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Илья Ермаков писал(а):
Не обижайте дядю Ахо :)
Ладно, не будем обижать :? .
В принципе, хорошая книжка, только много чего приходится фильтровать :) . Конфессия не та :lol:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Лексические тонкости Оберонов
СообщениеДобавлено: Понедельник, 25 Январь, 2010 14:32 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Илья Ермаков писал(а):
Коллеги, вы чего...

А чего во множественном числе-то ??? :D
Ну да, знаю я... Множество состояний ДКА изморфно одному состоянию конечного ДКА.
Можно ручками, можно "инструментом", а можно просто руководствуясь "здравым смыслом".
И все это дядюшка Ахо аккуратно разрисовал

Чего я хотел отметить: запутал меня Вирт по первому разу-то. Складывается ощущение (я знаю, что неправильное!!!), что "Регулярный", значит сразу представимый как ДКА - именно для него же расписаны правила генерации эквивалентного кода.
Спасла "моральная устойчивость".
И еще утверждаю, что легко и непринуждено, как бы выведенный из синтаксиса, код лексера для Оберон-0 - сделан с нарушениями этих правил. Правильно сделан, безусловно!!! Но с применением "здравого смысла" в дополнение к правилам.

Спрашивается, какой критерий правильности применения "здравого смысла" ???
Очевидно же: соответствие результата формальной постановке задачи.
И где эта постановка :?: вот что-то такое я и хотел сказать :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Лексические тонкости Оберонов
СообщениеДобавлено: Понедельник, 25 Январь, 2010 15:42 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
igor писал(а):
Вы, наверное правы, что есть лексеры, которые являются недетерминированными автоматами. Книга Дракона, на которую Вы ссылались, даёт на этот случай жалкую рекомендацию "быть аккуратными". А ещё предостерегает, что дескать иногда приходится откатываться назад, чтобы "перебрать все возможные варианты". Ужас!
1) Мое утверждение, что не просто есть, а большинство
2) Полный формализм позволяет описать и лексеры с "откатами". Но это определяется не формализмом, а фантазиями разработчика. Кстати говоря, "инструмент" делает такие предупреждения разработчику. Ибо "откаты" усложняют целевой код. Скажем, формально записанные требования к лексеру Оберон-0 откатов не потребуют.
Ужас или не ужас, но именно так устроена жизнь: кто-то живет "ужасно", а кто-то - красиво.
А инструмент просто сообщает свой "диагноз", ни на чем не настаивая. Как и положено инструменту, собственно


igor писал(а):
Иными словами говоря, можно разработать такой язык, в котором лексика будет задана детерминированным регулярным языком, а синтаксис - детерминированным контекстно-свободным языком
Вот и славненько. Только лексика Оберонов, являясь регулярной, не является детерминированной
Вот так может выглядеть часть ее формального определения:
Код:
{blank}              {/* пустышка=пропуску */}
  ...
"<"                  {... RETURN lxLT}
"<="                 {... RETURN lxLE}
ELSE                 {... RETURN lxELSE}
ELSIF                {... RETURN lxELSIF}
  ...
{alpha}{alphanum}*   {... RETURN lxIdent}
{digit}+             {... RETURN lxInteger}
{digit}{hexdigit}*X  {... RETURN lxChar}
  ...
.                    {... RETURN lxNull}
Хотите верьте, хотите нет - но это определение хоть и регулярного, но недерминированного "синтаксиса"
Который самыми различными способами может быть сведен к конечному автомату (писал выше)
Помните автоматные коды для комментария в параллельном топике :?:
Ну никак они не выводятся правилами Вирта. Но коллеги написали абсолютно правильно.
Как я делаю такой вывод ??? Написал формальное определение для этого комментария (с пустым action) и сравнил с кодами коллег.


igor писал(а):
Перечисленные Вами паттерны относятся к одному и тому же классу лексем.
Ну давайте еще вводить будем классы классов лексем :wink:
Соглашусь, выкрутиться из ситуации, оставаясь в рамках, изложенных Виртом - непросто.
Но изобретать новые сущности - зачем спрашивается ???
Вы правильно думали: токены и лексемы - синонимы. Они и сейчас такие же, как мне кажется.


igor писал(а):
Извините за прямоту, но это бред!
Насчет извинить - легко !!! :D
Ровно в тот момент, когда Вы примените формальные правила Вирта проверки детерминированности.
Возмите нетерминал ident и определите для него множество FOLLOW, и проверите на непересечение с множеством FIRST для {letter|digit}
Руководствуясь не "здравым смыслом", а именно приведенным синтаксисом, анализируя вхождения этого нетерминала в синтаксические уравнения.
Вот я пробовал, и сообщаю свои выводы по результатам этих попыток. А Вы, мне показалось - еще нет.
Попробуйте, увлекательное занятие. И потом сверим наши результаты, может я и не прав, посмотрим.
Например, для упражнения 4.2 на стр.42. Или для синтаксиса в приложениях A1 и A2.


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Лексические тонкости Оберонов
СообщениеДобавлено: Вторник, 26 Январь, 2010 09:59 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1200
Galkov писал(а):
Только лексика Оберонов, являясь регулярной, не является детерминированной


"Дитя моё, никогда не повторяй слова только за то, что они длинные и непонятные".

Galkov писал(а):
И на него дан ответ (ни из чего не выводимый), единый для всех в природе существующих лексеров, известный как правило "самой длинной лексемы"


Квантор "для всех" в данном предложении слишком сильный.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Лексические тонкости Оберонов
СообщениеДобавлено: Вторник, 26 Январь, 2010 12:06 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Trurl писал(а):
"Дитя моё, никогда не повторяй слова только за то, что они длинные и непонятные"
Видимо я произнес нечто такое, что навело Вас на мысль о моем непонимании используемых терминов.
Ну тогда я отвечу тоже в кавычках: "Чукча, ты не умничай, ты пальцем покажи !!!" :D

Trurl писал(а):
Квантор "для всех" в данном предложении слишком сильный
Ну да, математического доказательства квантора всеобщности у меня нет.
Вот чего я подумал в связи с этим: наверное, это разница в Школе.
Математики не считают верным недоказанное утверждение.
Физики поступают по-другому: результатом изучения мира является некоторая математическая модель (скажем, уравнения Максвелла), которая проверена на относително большом классе экспериментов. И они ее пользуются, невзирая на отсутствие математического доказательства.
Вот такие эти парни :) Ну вот, уравнения Максвела и были верны до квантования эл.магнитного поля (скажем, до экспериментальных данных о фотоэффекте)
Отсюда и вопрос: есть примеры таких лексеров ???
В принципе-то - это же не более чем договоренность... Теоретически, возможны авторы ее и нарушающие... Непонятно зачем... Но было бы интересно


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

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1200
Galkov писал(а):
Видимо я произнес нечто такое, что навело Вас на мысль о моем непонимании используемых терминов.

Угу. Или в небрежном использовании. Регулярный и недетерминированный язык - это как целое трансцендентное число.

Ну тогда я отвечу тоже в кавычках: "Чукча, ты не умничай, ты пальцем покажи !!!" :D

Galkov писал(а):
Теоретически, возможны авторы ее и нарушающие... Непонятно зачем... Но было бы интересно

Например, в фортране, если придерживаться правила "самой длинной лексемы", невозможно распознавать циклы.


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

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


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

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


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

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