OberonCore

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

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




Начать новую тему Ответить на тему  [ Сообщений: 180 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9  След.
Автор Сообщение
СообщениеДобавлено: Пятница, 05 Февраль, 2010 19:09 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Валерий Лаптев писал(а):
Молчанова - вы хотели сказать... :)
Еще порекомендую: ...
Да, Молчанова. Спасибо, поправил своё сообщение. :)
За рекомендации отдельное спасибо. :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 05 Февраль, 2010 20:02 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
igor писал(а):
Валерий Лаптев писал(а):
Молчанова - вы хотели сказать... :)
Еще порекомендую: ...
Да, Молчанова. Спасибо, поправил своё сообщение. :)
За рекомендации отдельное спасибо. :)

У меня есть небольшой обзор книг по системному программированию (писал когда-то для БХВ). Соберусь с силами - выставлю в Литературе.


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

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

Вот ознакомился намедни с Легаловым.
Про разработку сканера у него, если говорить мягко - престидижитаторство.
А если на сленге, характерном для данного форума - рукосуйство :)

И что в результате ??? Наблюдаю попытки у igor обязательно "принять решение" в автомате, который "равномощен регулярному выражению". И ведь у Легалова так и написано: прием лексемы происходит обязательно по выходу (джигит, блин!!!) из автомата.
Или патерн для комментария: "/*"{sym}"*/"... Сдуреть можно.

И все время, обращая внимание на "возможные трудности распознавания лексики", приводят FORTRAN в качестве примера. Докопались же до людей, которые и в мыслях не держали создание математических основ лексического и синтаксического анализа :lol:

Вот и получается, что информации - выше крыши.
А доказать, что исходный текст разбивается на лексемы НЕ ОДНОЗНАЧНО - крайне затруднительно
Приходится доказывать, что возможное разбиение исходного текста "3.1415" на лексемы integer period integer - соответствует ВСЕМ синтаксическим правилам.
Коллеги, побойтесь бога, чего тут доказывать :!:
А доказывать приходится потому, что в букварях написано, что сканер - это так, не более чем для удобства. И без него легко и обойтись. Или более туманно: "в принципе, можно и обойтись"
Вот Вам и мораль: начинаем слепо верить Великим => начинаем сомневаться даже в том, что 2x2=4
Ну или по другому: "Верить нельзя никому. Мне - можно" ((c) Мюллер) :D

В чем собственно был предмет обсуждения-то ??? Он начался с крайнего удивления igor моим постом :) То же, но может более коротко:
Использование сканера не просто "более удобно", а позволяет устранить неоднозначность разбиения исходного текста на лексемы (каждая из которых определена регулярным выражением). Сканер не может вернуть не-понять-что, даже для текста '"Х"' он вернет одно значение. И какое значение из двух: CharConstant, или string - определяется разработчиком сканера, а не регулярными выражениями для этих токенов.
Но одно :!:
В этом его главный смысл. А не в неком мифическом удобстве.
Если спросите, где я это прочитал - не скажу (не помню, может и нигде)... При всем изобилии информации :D


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

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Я уже давно удивляюсь разговорам о сканерах и лексерах. Давно пора сделать редактор интегрированной среды не текстовым... :) О чем тут Сергей Прохоренко неоднократно гуторил... :)


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

Зарегистрирован: Пятница, 24 Апрель, 2009 16:28
Сообщения: 563
Откуда: Москва
Galkov писал(а):
То же, но может более коротко:
Использование сканера не просто "более удобно", а позволяет устранить неоднозначность разбиения исходного текста на лексемы
Не понял, в чем пафос. С этим никто и не спорит.
----
А чем конкретно не понравился шаблон "/*"{sym}"*/" для комментария?


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

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Валерий Лаптев писал(а):
Я уже давно удивляюсь разговорам о сканерах и лексерах
Ну-ну :)

Нет, у меня удивления нет по этому поводу.
Текст еще далеко не умер. Текст это очень-очень полезная вещь.

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

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


Peter Almazov писал(а):
С этим никто и не спорит.
Спорят-спорят. У нас ведь все ходы записаны
Как минимум, до сих пор не верят (не вопрос, мне понятно, что Вы - верите) :)
Надо переходить дальше (по программе), а консесус взял - и не пришел
Консенсус-то старттопером - необходим категорически, имхо.


Peter Almazov писал(а):
А чем конкретно не понравился шаблон "/*"{sym}"*/" для комментария?
Ну вот видите :wink: Не пришел, консенсус-то...
ТЕМ, что данное регулярное выражение порождает такие лексемы (например "/* Гы-Гы-Гы */ Га-Га-Га */"), которые мы (и Легалов - тоже) комментариями считать и не собирались вовсе.

Кстати говоря, а слабо записать "честное" регулярное выражение для комментария :?:
Вопрос, естественно, не в коде его реализующем (Вы создавали про это тему - там все абсолютно понятно), а именно в формальной записи.


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

Зарегистрирован: Пятница, 24 Апрель, 2009 16:28
Сообщения: 563
Откуда: Москва
Galkov писал(а):
Кстати говоря, а слабо записать "честное" регулярное выражение для комментария :?:
Вот "честное" регулярное выражение для комментария (легаловского):

НачалоКомментария {sym} КонецКомментария

Лексику, как всегда, отделяем :)


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

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Galkov писал(а):
Ну и наконец, слова Вирта, обладают глубоким смыслом, мне представляется:
Вирт писал(а):
Однако, кому-то может показаться, что знание о методах трансляции не является необходимым для понимания связи между исполняемой программой и кодом., и еще менее важно знать, как на самом деле пишется компилятор. Личный опыт преподавателя подсказывает мне, что глубокое понимание предмета лучше всего приходит при всестороннем проникновении как в общую идею системы, так и в детали ее реализации.
Хоть я и не преподаватель, но мне тоже кажется, что фундаментальные знания нужны уже потому, что они являются фундаментом для созидания Великого и Вечного :)
Качество фундамента однозначно повлечет и качество нашей повседневной работы -- как-то так, видимо

Не... Давно пора осознать, что в разных областях программирования нужны разные уровни знаний. И не всем программистам требуется такой уровень знаний, который дает Вирт. ИМХО дело инструментальной среды - ОТГОРОДИТЬ рядового программиста-работника от особенностей операционной системы и тем более - аппаратной платформы. Создателям сред глубокие фундаментальные знания, о которых Вирт говорит, необходимы. А программисту, реализующему учет горюче-смазочных материалов - нет. И это беда инструментов, что они не отгораживают такого программиста от необходимости лезть внутрь.
Вот для таких программистов текстовое представление программы нужно только для чтения... :)


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

Зарегистрирован: Среда, 30 Сентябрь, 2009 14:45
Сообщения: 147
Galkov писал(а):
Не будет новостью, видимо, что лично я есть большой сторонник именно визуального программирования.
Но тут у меня возникло серьезное подозрение про "закон сохранения сложности". Уменьшая порог вхождения в программирование (что для меня уже не вопрос диспута, а эксперименталный факт) визуальными средами, мы не ликвидируем исходную сложность, а перекладывает это все дело на компилятор.

Тогда вот мнение от противника визуального программирования.

Порог вхождения на уровне "Hello world" - это не порог.
А порог вхождения на уровне любой реальной задачи визуальное программирование только повышает. Потому что поиск, где эта фича, напоминает коварные ходилки, в которых самое нужное рассовано по всем углам. А реализация визуального программирования всегда повышает сложность любого программирования.

Не скажу за оберон, но в дельфях я давно отказался от всякой визуальности - легче написать в блокноте 300-400 строк, а потом отладить, чем искать в закромах все эти свойства.

ИМХО, визуальность нужна тем, у кого недостаток воображения - им трудно представить, как будет выглядеть код в реализации., ИМХО.


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

Зарегистрирован: Пятница, 24 Апрель, 2009 16:28
Сообщения: 563
Откуда: Москва
2 Galkov: А Вы когда ссылаетесь на Ахо, какое издание имеете в виду - первое или второе?


Вложения:
1.png
1.png [ 48.53 КБ | Просмотров: 12044 ]
2.png
2.png [ 31.8 КБ | Просмотров: 12044 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 08 Февраль, 2010 21:43 

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


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

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Вторая книга - значительно обширнее... :)


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

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Ну вот, опять читать :D Спасибо, коллеги, ОТКРЫЛИ ГЛАЗА :!:


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

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

Что такое сканер, спрашивается ???
Это такая "машинка", которая делает именно однозначным (и это в нем главное) разбиение исходного текста на лексемы.
Какая для такого поведения дана информация ???
Список патернов (регулярных выражений) для всех токенов (по дядюшке АхО - это класс лексем, а они в свою очередь - конкретная реализация токена в виде ли текста, числа, и т.п.)
По какому принципу разрешается неоднозначность разбиения ???
Во-первых - да по тому самому правилу СДЛ. Не будем наконец вспоминать про фортрановский "DOI=1,"
Во-вторых, при равенстве длин разных лексем - по порядковому номеру в вышеозначенном списке патернов.
Чего происходит после распознавания лексемы по вышеозначенным правилам ???
Самый простой ответ - возврат соответствующего LexemID. Но мы же знаем, что порой ничего возвращать не надо, а надо просто пропускать какой ни то "комментарий"
Поэтому более общим ответом будет - выполнение действий предписанных разработчиком сканера. Т.е., вышеозначенный список патернов должен быть дополнен, каким-то образом, списком действий (Action) для каждого регулярного выражения. А уже у нутре этих Action разработчик явно указывает: то ли возврат соответствующего LexemID, то ли дополнительные действия по подготовке таблиц символов или рассчету аттрибута value, то ли просто - выбрать следующую лексему (без возврата в caller), начиная с некого начального состояния

Все это были довольно очевидные рассуждения. Кроме последних трех слов :)
Как у нас все работает ??? Сканер скушал некую порцию текста, и вернул некую лексему. Начинает кушать следующую...
Вопрос: по одинаковому ли алгоритму работает наш сканер при распознавании каждой лексемы ???
А вот тут есть фишка, и очень удобная - может и по разному. Т.е., вышеозначенные слова "некого начального состояния" могут иметь смысл указания на переход сканера в состояние приема лексем, отличное от некого default-а
В чем может быть польза... Ну например, по лексеме ASM он может переключиться в режим приема асм-лексем - другой язык таки... А уже в асм-состоянии, по какому-нибудь END - опять в исходное.
Можно по односимвольной лексеме "кавычка" переключиться в состояние sting, и начать хитромудро парсить какие-нибудь esc-коды.

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

Вот Вам пример про ЧЕСТНЫЙ комментарий.
Он в LEX-синтаксисе написан (там фигурные скобки обладают совсем другим смыслом), поэтому поясню.
В состоянии сканера comment работает всего ДВЕ лексемы: двухсимвольная "*)", и односимвольная - sym, типа любой символ. По честному любой, а не по Легалову: тут играть, тут не играть, а тут рыбу заворачивали...
Какая сработает? Да по правилу СДЛ. По срабатыванию первой - вернется сканер в исходное состояние, по второй (один символ) - просто пропустит. И опять - первая или вторая?
Вот и все!!!
Все точно и ясно, и точно и быстро, и глухо как в танке. Ошибиться невозможно.
Вот я и хотел посмотреть на "честный" патерн для комментария, без такой удобной "фишки-состояний"
Я себе его примерно представляю - именно из него ведь код процедуры comment сделан, по правилам Вирта. А код-то Вы видели, и обсуждали в отдельной теме :D


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 09 Февраль, 2010 07:49 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Galkov оказался такой же упёртый как и я! :D ("Впэртый" (С) Владимир Лось)

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


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

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

Рисуем, и смотрим. Показываем пальцем: где, почему, и сколько фишек. Делов-то

А :?: :D


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 09 Февраль, 2010 09:48 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Galkov писал(а):
Ну да: "Этого не может быть, потому-что этого не может быть никогда"
Все необходимые доказательства и примеры я привёл выше в этой теме. Другое дело, что они не были услышаны. Но тут я уже не виноват. :)


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

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

Зря Вы думаете, что не были слова услышаны. Еще как услышаны. Просто словам не верю я безусловно, а Думаю над ними.
И книжки не просто читаю, а именно с большой буквы: Читаю.
Тут уж извините, от своего права Думать - я не откажусь, какие бы Великие мне не рассказывали, что "сканер, это просто для удобства"
Вот мне показалось (т.е., точно утверждать не буду), что слова, Вами произносимые - ну порой просто цитаты из Легалова.
Ноги бы ему за это повыдергивать...

Собственно, "детерминированность" - это одно слово вырванное из контекста.
А контекст был такой:
Цитата:
Мне даже кажется, что наиболее важной причиной выделения лексера в отдельную функциональность - это оставить детерминированность парсеру. Хотя тот уже не просто автомат, а как бы - "стековый". Вот парсер - тот ДА, все альтернативы распознает с первой лексемы, вся недетерминированность сосредоточена в лексере.
Грубо говоря, борьба идет за единичку в определении грамматики: хоть LL(1), хоть LR(1).
По-моему, это более значительная причина, чем указанная Виртом "независимость от конкретного представления ..."
Так я и сейчас придерживаюсь точно такой же точки зрения.
Причем, еще более уверенно. Потому-что еще больше об этом думал.
Если для парсера случится "нам угадать не суждено, как наше слово отзовется" - то будет полный кердык. Как минимум - другая грамматика.
А вот если сканер с первой буквы "не угадает" - никакого криминала.
И именно потому, что "никакого криминала" - и пишут патерны на заморачиваясь на "детерминированность"
Могли заморачиваться. Приводил Вам пример для HexNumber и CharConstant в Дельфи - с первого символа распознаются.
Но не заморачиваются!!! Потому-что проблем-то технических никаких НЕТ (в отличие от парсера - там ЕСТЬ), а человеку понятнее.

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


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

Зарегистрирован: Пятница, 24 Апрель, 2009 16:28
Сообщения: 563
Откуда: Москва
Galkov писал(а):
Так я и сейчас придерживаюсь точно такой же точки зрения.
Причем, еще более уверенно. Потому-что еще больше об этом думал.
Если Вы уверены в своей правоте, зачем так много слов?
Предположим, Ваш оппонент согласится со всем - что это изменит?


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

Зарегистрирован: Пятница, 24 Апрель, 2009 16:28
Сообщения: 563
Откуда: Москва
igor писал(а):
3. Натыкайте меня носом :) в то место в моём файле, из которого следует, что хотя бы одно условие детерминированности нарушено.
Если в файл добавить лексемы > и >= , непонятно почему выкинутые, то FIRST(>)=FIRST(>=).


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

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


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

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


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

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