OberonCore https://forum.oberoncore.ru/ |
|
Детерминированность лексики Оберона https://forum.oberoncore.ru/viewtopic.php?f=61&t=2279 |
Страница 7 из 9 |
Автор: | igor [ Пятница, 05 Февраль, 2010 19:09 ] |
Заголовок сообщения: | Re: Детерминированность лексики Оберона |
Валерий Лаптев писал(а): Молчанова - вы хотели сказать... Да, Молчанова. Спасибо, поправил своё сообщение. Еще порекомендую: ... За рекомендации отдельное спасибо. |
Автор: | Валерий Лаптев [ Пятница, 05 Февраль, 2010 20:02 ] |
Заголовок сообщения: | Re: Детерминированность лексики Оберона |
igor писал(а): Валерий Лаптев писал(а): Молчанова - вы хотели сказать... Да, Молчанова. Спасибо, поправил своё сообщение. Еще порекомендую: ... За рекомендации отдельное спасибо. У меня есть небольшой обзор книг по системному программированию (писал когда-то для БХВ). Соберусь с силами - выставлю в Литературе. |
Автор: | Galkov [ Понедельник, 08 Февраль, 2010 11:42 ] |
Заголовок сообщения: | Re: Детерминированность лексики Оберона |
В том-то и беда, что книг много, а добыть из них настоящую Истину - занятие затруднительное Ну не в состоянии я их прочитать все. Моя задача - Знание получить, а не соревнование в скорочтении. Потому и читаю не очень быстро... Вот ознакомился намедни с Легаловым. Про разработку сканера у него, если говорить мягко - престидижитаторство. А если на сленге, характерном для данного форума - рукосуйство И что в результате ??? Наблюдаю попытки у igor обязательно "принять решение" в автомате, который "равномощен регулярному выражению". И ведь у Легалова так и написано: прием лексемы происходит обязательно по выходу (джигит, блин!!!) из автомата. Или патерн для комментария: "/*"{sym}"*/"... Сдуреть можно. И все время, обращая внимание на "возможные трудности распознавания лексики", приводят FORTRAN в качестве примера. Докопались же до людей, которые и в мыслях не держали создание математических основ лексического и синтаксического анализа Вот и получается, что информации - выше крыши. А доказать, что исходный текст разбивается на лексемы НЕ ОДНОЗНАЧНО - крайне затруднительно Приходится доказывать, что возможное разбиение исходного текста "3.1415" на лексемы integer period integer - соответствует ВСЕМ синтаксическим правилам. Коллеги, побойтесь бога, чего тут доказывать А доказывать приходится потому, что в букварях написано, что сканер - это так, не более чем для удобства. И без него легко и обойтись. Или более туманно: "в принципе, можно и обойтись" Вот Вам и мораль: начинаем слепо верить Великим => начинаем сомневаться даже в том, что 2x2=4 Ну или по другому: "Верить нельзя никому. Мне - можно" ((c) Мюллер) В чем собственно был предмет обсуждения-то ??? Он начался с крайнего удивления igor моим постом То же, но может более коротко: Использование сканера не просто "более удобно", а позволяет устранить неоднозначность разбиения исходного текста на лексемы (каждая из которых определена регулярным выражением). Сканер не может вернуть не-понять-что, даже для текста '"Х"' он вернет одно значение. И какое значение из двух: CharConstant, или string - определяется разработчиком сканера, а не регулярными выражениями для этих токенов. Но одно В этом его главный смысл. А не в неком мифическом удобстве. Если спросите, где я это прочитал - не скажу (не помню, может и нигде)... При всем изобилии информации |
Автор: | Валерий Лаптев [ Понедельник, 08 Февраль, 2010 13:29 ] |
Заголовок сообщения: | Re: Детерминированность лексики Оберона |
Я уже давно удивляюсь разговорам о сканерах и лексерах. Давно пора сделать редактор интегрированной среды не текстовым... О чем тут Сергей Прохоренко неоднократно гуторил... |
Автор: | Peter Almazov [ Понедельник, 08 Февраль, 2010 13:57 ] |
Заголовок сообщения: | Re: Детерминированность лексики Оберона |
Galkov писал(а): То же, но может более коротко: Не понял, в чем пафос. С этим никто и не спорит.Использование сканера не просто "более удобно", а позволяет устранить неоднозначность разбиения исходного текста на лексемы ---- А чем конкретно не понравился шаблон "/*"{sym}"*/" для комментария? |
Автор: | Galkov [ Понедельник, 08 Февраль, 2010 14:31 ] |
Заголовок сообщения: | Re: Детерминированность лексики Оберона |
Валерий Лаптев писал(а): Я уже давно удивляюсь разговорам о сканерах и лексерах Ну-ну Нет, у меня удивления нет по этому поводу. Текст еще далеко не умер. Текст это очень-очень полезная вещь. Не будет новостью, видимо, что лично я есть большой сторонник именно визуального программирования. Но тут у меня возникло серьезное подозрение про "закон сохранения сложности". Уменьшая порог вхождения в программирование (что для меня уже не вопрос диспута, а эксперименталный факт) визуальными средами, мы не ликвидируем исходную сложность, а перекладывает это все дело на компилятор. А существующие технологии и с сегодняшней-то сложностью справляются не очень... А вот если БЫ осуществить такой интеллектуальный прорыв, чтобы искуство дзена начало умирать по причине бесперспертивности соревнования с ИИ - тогда ДА. И я бы первый присоединился к Вашему удивлению Ну и наконец, слова Вирта, обладают глубоким смыслом, мне представляется: Вирт писал(а): Однако, кому-то может показаться, что знание о методах трансляции не является необходимым для понимания связи между исполняемой программой и кодом., и еще менее важно знать, как на самом деле пишется компилятор. Личный опыт преподавателя подсказывает мне, что глубокое понимание предмета лучше всего приходит при всестороннем прникновении как в общую идею системы, так и в детали ее реализации. Хоть я и не преподаватель, но мне тоже кажется, что фундаментальные знания нужны уже потому, что они являются фундаментом для созидания Великого и Вечного Качество фундамента однозначно повлечет и качество нашей повседневной работы -- как-то так, видимо Peter Almazov писал(а): С этим никто и не спорит. Спорят-спорят. У нас ведь все ходы записаны Как минимум, до сих пор не верят (не вопрос, мне понятно, что Вы - верите) Надо переходить дальше (по программе), а консесус взял - и не пришел Консенсус-то старттопером - необходим категорически, имхо. Peter Almazov писал(а): А чем конкретно не понравился шаблон "/*"{sym}"*/" для комментария? Ну вот видите Не пришел, консенсус-то... ТЕМ, что данное регулярное выражение порождает такие лексемы (например "/* Гы-Гы-Гы */ Га-Га-Га */"), которые мы (и Легалов - тоже) комментариями считать и не собирались вовсе. Кстати говоря, а слабо записать "честное" регулярное выражение для комментария Вопрос, естественно, не в коде его реализующем (Вы создавали про это тему - там все абсолютно понятно), а именно в формальной записи. |
Автор: | Peter Almazov [ Понедельник, 08 Февраль, 2010 15:21 ] |
Заголовок сообщения: | Re: Детерминированность лексики Оберона |
Galkov писал(а): Кстати говоря, а слабо записать "честное" регулярное выражение для комментария Вот "честное" регулярное выражение для комментария (легаловского):НачалоКомментария {sym} КонецКомментария Лексику, как всегда, отделяем |
Автор: | Валерий Лаптев [ Понедельник, 08 Февраль, 2010 17:50 ] |
Заголовок сообщения: | Re: Детерминированность лексики Оберона |
Galkov писал(а): Ну и наконец, слова Вирта, обладают глубоким смыслом, мне представляется: Вирт писал(а): Однако, кому-то может показаться, что знание о методах трансляции не является необходимым для понимания связи между исполняемой программой и кодом., и еще менее важно знать, как на самом деле пишется компилятор. Личный опыт преподавателя подсказывает мне, что глубокое понимание предмета лучше всего приходит при всестороннем проникновении как в общую идею системы, так и в детали ее реализации. Хоть я и не преподаватель, но мне тоже кажется, что фундаментальные знания нужны уже потому, что они являются фундаментом для созидания Великого и Вечного Качество фундамента однозначно повлечет и качество нашей повседневной работы -- как-то так, видимо Не... Давно пора осознать, что в разных областях программирования нужны разные уровни знаний. И не всем программистам требуется такой уровень знаний, который дает Вирт. ИМХО дело инструментальной среды - ОТГОРОДИТЬ рядового программиста-работника от особенностей операционной системы и тем более - аппаратной платформы. Создателям сред глубокие фундаментальные знания, о которых Вирт говорит, необходимы. А программисту, реализующему учет горюче-смазочных материалов - нет. И это беда инструментов, что они не отгораживают такого программиста от необходимости лезть внутрь. Вот для таких программистов текстовое представление программы нужно только для чтения... |
Автор: | Виктор О [ Понедельник, 08 Февраль, 2010 18:16 ] |
Заголовок сообщения: | Re: Детерминированность лексики Оберона |
Galkov писал(а): Не будет новостью, видимо, что лично я есть большой сторонник именно визуального программирования. Но тут у меня возникло серьезное подозрение про "закон сохранения сложности". Уменьшая порог вхождения в программирование (что для меня уже не вопрос диспута, а эксперименталный факт) визуальными средами, мы не ликвидируем исходную сложность, а перекладывает это все дело на компилятор. Тогда вот мнение от противника визуального программирования. Порог вхождения на уровне "Hello world" - это не порог. А порог вхождения на уровне любой реальной задачи визуальное программирование только повышает. Потому что поиск, где эта фича, напоминает коварные ходилки, в которых самое нужное рассовано по всем углам. А реализация визуального программирования всегда повышает сложность любого программирования. Не скажу за оберон, но в дельфях я давно отказался от всякой визуальности - легче написать в блокноте 300-400 строк, а потом отладить, чем искать в закромах все эти свойства. ИМХО, визуальность нужна тем, у кого недостаток воображения - им трудно представить, как будет выглядеть код в реализации., ИМХО. |
Автор: | Peter Almazov [ Понедельник, 08 Февраль, 2010 19:56 ] | |||
Заголовок сообщения: | Re: Детерминированность лексики Оберона | |||
2 Galkov: А Вы когда ссылаетесь на Ахо, какое издание имеете в виду - первое или второе?
|
Автор: | Galkov [ Понедельник, 08 Февраль, 2010 21:43 ] |
Заголовок сообщения: | Re: Детерминированность лексики Оберона |
У меня первое (крррасный дракон). И не знал, что у них разная свежесть... Если есть "техническая свежесть" - буду бесконечно благодарен, например мылу |
Автор: | Валерий Лаптев [ Понедельник, 08 Февраль, 2010 23:11 ] |
Заголовок сообщения: | Re: Детерминированность лексики Оберона |
Вторая книга - значительно обширнее... |
Автор: | Galkov [ Понедельник, 08 Февраль, 2010 23:54 ] |
Заголовок сообщения: | Re: Детерминированность лексики Оберона |
Ну вот, опять читать Спасибо, коллеги, ОТКРЫЛИ ГЛАЗА |
Автор: | Galkov [ Вторник, 09 Февраль, 2010 02:23 ] |
Заголовок сообщения: | Re: Детерминированность лексики Оберона |
Вот какое замечание мне хотелось сделать про лексер... В смысле - сканер. Возможно, немного забегаю, но предположим (хотя бы в рамках только этого поста), что неоднозначность разбиения исходного текста на лексемы - факт не вызывающий сомнений Что такое сканер, спрашивается ??? Это такая "машинка", которая делает именно однозначным (и это в нем главное) разбиение исходного текста на лексемы. Какая для такого поведения дана информация ??? Список патернов (регулярных выражений) для всех токенов (по дядюшке АхО - это класс лексем, а они в свою очередь - конкретная реализация токена в виде ли текста, числа, и т.п.) По какому принципу разрешается неоднозначность разбиения ??? Во-первых - да по тому самому правилу СДЛ. Не будем наконец вспоминать про фортрановский "DOI=1," Во-вторых, при равенстве длин разных лексем - по порядковому номеру в вышеозначенном списке патернов. Чего происходит после распознавания лексемы по вышеозначенным правилам ??? Самый простой ответ - возврат соответствующего LexemID. Но мы же знаем, что порой ничего возвращать не надо, а надо просто пропускать какой ни то "комментарий" Поэтому более общим ответом будет - выполнение действий предписанных разработчиком сканера. Т.е., вышеозначенный список патернов должен быть дополнен, каким-то образом, списком действий (Action) для каждого регулярного выражения. А уже у нутре этих Action разработчик явно указывает: то ли возврат соответствующего LexemID, то ли дополнительные действия по подготовке таблиц символов или рассчету аттрибута value, то ли просто - выбрать следующую лексему (без возврата в caller), начиная с некого начального состояния Все это были довольно очевидные рассуждения. Кроме последних трех слов Как у нас все работает ??? Сканер скушал некую порцию текста, и вернул некую лексему. Начинает кушать следующую... Вопрос: по одинаковому ли алгоритму работает наш сканер при распознавании каждой лексемы ??? А вот тут есть фишка, и очень удобная - может и по разному. Т.е., вышеозначенные слова "некого начального состояния" могут иметь смысл указания на переход сканера в состояние приема лексем, отличное от некого default-а В чем может быть польза... Ну например, по лексеме ASM он может переключиться в режим приема асм-лексем - другой язык таки... А уже в асм-состоянии, по какому-нибудь END - опять в исходное. Можно по односимвольной лексеме "кавычка" переключиться в состояние sting, и начать хитромудро парсить какие-нибудь esc-коды. Скажем так, я не обладаю достаточной образованностью, чтобы ответить, описывается ли эта фишка какой-нибудь "грамматикой". Но вот то, что это не усложняет сканер принципиально - точно знаю. Как был автоматом, таким и останется. И графическое представление довольно очевидно: просто "стартовых" состояний, с которых начинают разыгрываться фишки по диаграммам переходов - становится несколько. Ну и списков патернов (вместе с соответствующими Action) становится несколько - по списку на каждое состояние сканера. Вот Вам пример про ЧЕСТНЫЙ комментарий. Он в LEX-синтаксисе написан (там фигурные скобки обладают совсем другим смыслом), поэтому поясню. В состоянии сканера comment работает всего ДВЕ лексемы: двухсимвольная "*)", и односимвольная - sym, типа любой символ. По честному любой, а не по Легалову: тут играть, тут не играть, а тут рыбу заворачивали... Какая сработает? Да по правилу СДЛ. По срабатыванию первой - вернется сканер в исходное состояние, по второй (один символ) - просто пропустит. И опять - первая или вторая? Вот и все!!! Все точно и ясно, и точно и быстро, и глухо как в танке. Ошибиться невозможно. Вот я и хотел посмотреть на "честный" патерн для комментария, без такой удобной "фишки-состояний" Я себе его примерно представляю - именно из него ведь код процедуры comment сделан, по правилам Вирта. А код-то Вы видели, и обсуждали в отдельной теме |
Автор: | igor [ Вторник, 09 Февраль, 2010 07:49 ] |
Заголовок сообщения: | Re: Детерминированность лексики Оберона |
Galkov оказался такой же упёртый как и я! ("Впэртый" (С) Владимир Лось) Имхо, в случае с Обероном на "игровой" доске стоит ОДНА фишка. Сканер "за один ход" считывает только ОДИН следующий символ и переводит фишку на другое "игровое поле" (состояние автомата) БЕЗВОЗВРАТНО. Перебором вариантов (для которых и нужна горсть фишек) сканер не занимается, в виду детерминированности синтаксиса. |
Автор: | Galkov [ Вторник, 09 Февраль, 2010 08:54 ] |
Заголовок сообщения: | Re: Детерминированность лексики Оберона |
Ну да: "Этого не может быть, потому-что этого не может быть никогда" Вот я привел выше принцип формализма... Пишем патерны, снабжаем каждый своими акциями Рисуем, и смотрим. Показываем пальцем: где, почему, и сколько фишек. Делов-то А |
Автор: | igor [ Вторник, 09 Февраль, 2010 09:48 ] |
Заголовок сообщения: | Re: Детерминированность лексики Оберона |
Galkov писал(а): Ну да: "Этого не может быть, потому-что этого не может быть никогда" Все необходимые доказательства и примеры я привёл выше в этой теме. Другое дело, что они не были услышаны. Но тут я уже не виноват.
|
Автор: | Galkov [ Вторник, 09 Февраль, 2010 13:41 ] |
Заголовок сообщения: | Re: Детерминированность лексики Оберона |
Неправда Ваша. Это не доказательства, а витание в облаках было (основанное на понимании диаграмм Вирта в стиле Легалова). Рассуждения словесами. А доказательства - это применение формальных правил, к формальным же исходным данным. Словеса - это субъективно, одни и те же слова, каждый человек может понять по разному. Формализм - это объективно. Его могут применять совершенно разные люди с одинаковым результатом. Зря Вы думаете, что не были слова услышаны. Еще как услышаны. Просто словам не верю я безусловно, а Думаю над ними. И книжки не просто читаю, а именно с большой буквы: Читаю. Тут уж извините, от своего права Думать - я не откажусь, какие бы Великие мне не рассказывали, что "сканер, это просто для удобства" Вот мне показалось (т.е., точно утверждать не буду), что слова, Вами произносимые - ну порой просто цитаты из Легалова. Ноги бы ему за это повыдергивать... Собственно, "детерминированность" - это одно слово вырванное из контекста. А контекст был такой: Цитата: Мне даже кажется, что наиболее важной причиной выделения лексера в отдельную функциональность - это оставить детерминированность парсеру. Хотя тот уже не просто автомат, а как бы - "стековый". Вот парсер - тот ДА, все альтернативы распознает с первой лексемы, вся недетерминированность сосредоточена в лексере. Так я и сейчас придерживаюсь точно такой же точки зрения.Грубо говоря, борьба идет за единичку в определении грамматики: хоть LL(1), хоть LR(1). По-моему, это более значительная причина, чем указанная Виртом "независимость от конкретного представления ..." Причем, еще более уверенно. Потому-что еще больше об этом думал. Если для парсера случится "нам угадать не суждено, как наше слово отзовется" - то будет полный кердык. Как минимум - другая грамматика. А вот если сканер с первой буквы "не угадает" - никакого криминала. И именно потому, что "никакого криминала" - и пишут патерны на заморачиваясь на "детерминированность" Могли заморачиваться. Приводил Вам пример для HexNumber и CharConstant в Дельфи - с первого символа распознаются. Но не заморачиваются!!! Потому-что проблем-то технических никаких НЕТ (в отличие от парсера - там ЕСТЬ), а человеку понятнее. igor, если Вы не вереите этому сверх-очевидному факту - ну мне же не жалко Не у меня же, в конце-концов, проблемы с пониманием... И не упертый я, а - думающий. И это не не я говорю бред, а - Вы (встречная просьба извинить за прямоту) |
Автор: | Peter Almazov [ Вторник, 09 Февраль, 2010 14:07 ] |
Заголовок сообщения: | Re: Детерминированность лексики Оберона |
Galkov писал(а): Так я и сейчас придерживаюсь точно такой же точки зрения. Если Вы уверены в своей правоте, зачем так много слов?Причем, еще более уверенно. Потому-что еще больше об этом думал. Предположим, Ваш оппонент согласится со всем - что это изменит? |
Автор: | Peter Almazov [ Вторник, 09 Февраль, 2010 14:09 ] |
Заголовок сообщения: | Re: Детерминированность лексики Оберона |
igor писал(а): 3. Натыкайте меня носом в то место в моём файле, из которого следует, что хотя бы одно условие детерминированности нарушено. Если в файл добавить лексемы > и >= , непонятно почему выкинутые, то FIRST(>)=FIRST(>=).
|
Страница 7 из 9 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |