Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - valexey

Страницы: [1] 2 3 ... 133
1
Всё, основные логи теперь тут: http://oberspace.dyndns.org/log/oberon@conference.jabber.ru/

2
Сервак с ботом переезжал физически на другое место. Еще не переехал.

3
Общий раздел / Re: Про парсер и лексер.
« : Сентябрь 12, 2012, 09:47:08 pm »
Добавляю свой вопрос: А зачем вам язык с лексемами зависящими от контекста?
Чтобе легко лепить eDSL'и, очевидно.

Другое дело, что практика показывает, чта-а средний программист не умеет думать еще и о конструировании DSL, даже eDSL не умеет. У него голова занята совсем другим - предметной областью.

Поэтому, после общения с Владиславом Чистяковов (ака VladD2) по поводу Nemerle/N2 и Андреем Бреславом, по поводу Kotlin'a, у меня сложилось четкое мнение, что Kotlin при попутном ветре вполне может взлететь, а вот Nemerle и, тем более, Nemerle-2 - нет.

Хотя мне конечно N2 намного интересней Котлина. Точнее так: N1/N2 мне интересней на поковыряться в алгоритмах, dsl'и понаделать, теорию там с практикой в плане синтаксического разбора почесать (единственное что активно мешает ковырянию - мертвая привязка немерлей к .net'у. Мне довольно сложно найти винды в округе чтобы там немерлю поковырять).

Kotlin интересен с сугубо практической точки зрения (но нужно дождаться стабилизации языка и средств разработки для него). Особенно он мне интересен тем, что у него два бекенда - jvm и js.

4
Мне интересно другое (может это где-то описано, и я проглядел) - сможет ли ББшный вариант...
Так нет ББ-шного варианта. ББ обёртка зовёт длл написанную на Си.
Это, хм, очень странно. Казалось бы из ББ все это должно делаться как раз проще - там и RTTI есть искаропки (не нужно огород городить макросами) и вообще... Лучше в случае краха иметь побольше информации прямо в ББ. А то если какая-кака в Сишной части, то ББ ведь просто сложится.

5
Ммм... курсовая работа студента?

А С-шный код Ткачёву "понравится". Зашибись по полной программе: кругом дефайны, ретурны из середины процедуры, break, continue и т. п. говнокод.
Кстати, код на самом деле написан весьма аккуратно. Читается легко (на мой вкус) и понимается тоже. Ведь return из середины это не абсолютное зло :-) То есть в этом плане я проблем не вижу и разобраться в этом коде мне весьма просто.

Ну, а то что такой стиль в разрез идет с тем что пропагандируется на оберонкоре... Забавно в общем :-)

Мне интересно другое (может это где-то описано, и я проглядел) - сможет ли ББшный вариант на винде по сети взаимодействовать с сишной частью на линуксе, причем линух на каком-нибудь PPC с bigendian'ом.

6
Ммм... курсовая работа студента?

А С-шный код Ткачёву "понравится". Зашибись по полной программе: кругом дефайны, ретурны из середины процедуры, break, continue и т. п. говнокод. Удивляюсь как только автор не побоялся выкладывать ссылку на такое "изделие" на Оберонкоре. Его же там четвертуют.  :) :) :)

info21 не четвертует - он туда просто не будет смотреть :-)

7
Глянул одним глазом. Я бы сказал что примеры не удачно написаны - они написаны как полноценные конечно пользовательские приложения. С хелпом по аргументам, с разбором аргументов и так далее.

В примерах это не нужно. Как разобрать аргументы и выдать хелп в консоль я и так знаю, мне это не интересно. А интересно мне увидеть пример использования либы. С минимумом второстепенного мусора.

Поэтому пожелание: сделать хотя бы несколько подобных минималистичных примеров.

8
Отсюда: http://forum.oberoncore.ru/viewtopic.php?f=5&t=4083
Цитата: Дмитрий Дагаев
Выложил свой проект - коммуникационное ПО для Оберона/BlackBox и С на
http://sourceforge.net/projects/ta1/.

1. TA позволяет строить распределенные системы на основе моделей клиент-сервер и издатель-подписчик, а также системы обмена сообщений низкого уровня. TA может заменить клиент-серверные технологии CORBA, DCOM и DDS-технологию издатель-подписчик.

2. TA построена исключительно на неблокирующем режиме сетевого взаимодействия, поэтому не страдает подвисаниями, характерными для COM (да и CORBA) и не требует отдельных тредов, блокируемых во время ожидание прихода данных.

3. TA имеет тип протокола обмена SRPS для локальных сетей и SOAP/HTTP - для глобальных. На физическом уровне в локальных сетях возможно использование протоколов: UDP multicast, UDP, TCP, ICMP, Shared Memory. Возможен обмен через DLL, а в C-Unix версии - через SO, Unix Domain Sockets и MSGQ. Множество поддерживаемых протоколов может расширяться.

4. TA - пилотный проект. Есть 2 варианта: TA для BlackBox и TA для C. Первая протестирована для Винды, хотя частично работает и в Wine. Вторая - тестироваана и для Linux.

5. TA распространяется в исходных текстах по лицензии LGPL.

У кого есть желание/время гляньте что там и как. А то я пока не могу полноценно это посмотреть.

9
Общий раздел / Re: Юмор
« : Сентябрь 12, 2012, 01:43:53 pm »

10
Общий раздел / Re: Про парсер и лексер.
« : Сентябрь 11, 2012, 06:04:39 pm »
Ну, вообще говоря, обычно от парсера мы хотим несколько бОльшего. Если это часть компилятора - то нам нужно распозновать отдельные конструкции языка, нам нужно восстановление после ошибок, нам нужна точная и внятная диагностика ошибок для прикладного программиста.
Здравствуй капитан очевидность.
Превед!

Вот только научить всему этому парсер на аналитической грамматике намного проще.
Вон посмотри на тот ужОс в который превращается разбор простейших арифметических выражений.
Там ты не получишь ни нормального АСТ. Ни нормального восстановления после ошибок. Ни нормальных сообщений об ошибках.
Ибо ни один пользователь языка не поймет что term'ы м factor'ами.

Дык уже (не понял):
Цитировать
[00:16:51] <vlad2> А вот как расшифровывается "term" применительно к примерам всяких грамматик?
[00:38:11] <valexеy> vlad2: terminal ?
[00:38:25] <valexеy> там есть терминалы и нетерминалы
[00:38:31] <valexеy> а еще бывают лексемы
[00:38:39] <valexеy> ну и правила вывода
[00:38:41] <valexеy> вроде бы все.
[00:38:46] <valexеy> больше ничего там нет
[00:38:54] <valexеy> а, ну еще аксиома грамматики.
[00:38:57] <valexеy> теперь точно все :-)
[00:39:14] <vlad2> Не, не терминал.
[00:39:43] <vlad2> Пытаюсь сочинить EBNF. Пока глухо.
[00:41:10] <valexеy> Э? А чо там сочинять то?
[00:41:58] <valexеy> откуда ты вообще этот терм выкопал?
[00:42:01] <valexеy> давай контекст
[00:44:30] <valexеy> Терм — кормовая единица, выражаемая в количестве «чистой», или физиологически полезной животному, энергии. В США один терм приравнен к 1 Мкал.
[00:44:38] <valexеy> :-)
[00:47:38] <vlad2> Терм во всяких примерах. Вобщем избавился я от него :)
[00:47:49] <vlad2> Сочиняю грамматику для выражений.
[00:47:55] <vlad2> Вроде получилось.
[00:48:40] <valexеy> В каких это примерах?
[00:49:07] <vlad2> Например, в Compiler Construction ;)
[00:49:23] <valexеy> В переводном или в исходном?
[00:49:50] <vlad2> syntax = {production}.
production = identifier "=" expression "." .
expression = term {"|" term}.
term = factor {factor}.
factor = identifier | string | "(" expression ")" | "[" expression "]" | "{" expression "}".
[00:49:56] <vlad2> В исходном, конечно.
[00:50:00] <vlad2> Вот что тут term?
[00:50:05] <valexеy> а, ну это ж тупо так один из нетерминалов назван
[00:50:12] <valexеy> term = factor {factor}.
[00:50:17] <vlad2> _Почему_ так?
[00:50:19] <valexеy> очевидно же :-)
[00:50:22] <vlad2> Как переводится то? :)
[00:50:26] <valexеy> Потому что так захотелось создателю :-)
[00:50:36] <valexеy> У меня сестра их вообще называет навроде A12
[00:50:38] <valexеy> :-)
[00:50:45] <vlad2> просто оно реально confusing с терминалами нетерминалами.
[00:51:02] <valexеy> ну, блин. это ж Вирт! :-)
[00:51:26] <vlad2> Кстати, если попробуешь представить себе этот синтаксис - тоже фигня какая-то поулучается.
[00:52:40] <valexеy> нихачу представлять!
[00:52:52] <vlad2> factor {factor} превращается в последовательность всякой херни (без операторов). К чему такой пример?
[00:54:00] <valexеy> К тому, что Вирт там избавлялся от левой рекурсии (на которой рекурсивный спуск, да и вообще почти любой парсер который идет сверху-вниз, кроме GLL, сдохнет).
[00:55:05] <valexеy> Это стандартный прием ухода от левой рекурсии, в ахульмане он описан.
[00:55:36] <valexеy> А у Вирта, НЕ описан. Ибо грамматикам он не учит. А учит по готовой Им даденой грамматике строить компилятор одного вида :-)

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

PS. Если ты так высказываешься в сторону АхУльмана, то что же ты скажешь про "Построение Компиляторов" Вирта? ;-)

11
Общий раздел / Re: Про парсер и лексер.
« : Сентябрь 11, 2012, 05:13:45 pm »
Но когда мы пишем парсер, у нас нет задачи, сгенерировать все тексты на языке.
У нас есть задача взять строку и сказать принадлежит ли она языку.
Ну, вообще говоря, обычно от парсера мы хотим несколько бОльшего. Если это часть компилятора - то нам нужно распозновать отдельные конструкции языка, нам нужно восстановление после ошибок, нам нужна точная и внятная диагностика ошибок для прикладного программиста.

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

12
Общий раздел / Re: Про парсер и лексер.
« : Сентябрь 11, 2012, 03:18:13 pm »
А если делать парсер который может изменять свою грамматику во время разбора текста (чем я и занимаюсь) то он может быть только безлексерным.
А можно какой-нибудь примерчик, а то не понятно.
А что тут не понятного? Написал using syntax Xml; и у тебя в языке появились XML литаралы.
А если они конфликтуют с другими литералами?

13
Общий раздел / Re: Про парсер и лексер.
« : Сентябрь 11, 2012, 12:40:46 pm »
Иногда полезный.
Только если занимаешься онанизмом (более мягкое слово подобрать не могу) с алгоритмами, которые пытаются делать парсер, по языку который описывает генератор.
Если нужно разобрать что-то простое, причем пишешь ты на чем-то вроде Си и работать должно оно на сильно ограниченных ресурсах (реально ограниченных, то есть мегабайт в распоряжении скорее всего не будет), ужель вместо рекурсивного спуска будешь использовать что-то более брутальное?

Где можно прочитать/посмотреть/пощупать?
https://github.com/rampelstinskin/ParserGenerator
Это устаревшая версия. Сейчас, в пока закрытом режиме, идут работы по доведению её до промышленного качества.
Это тот самый парсер про который говорил VladD2 на Application Developer Days-3 (в своем долгом спиче про Nemerle-2)?

14
Общий раздел / Re: Про парсер и лексер.
« : Сентябрь 11, 2012, 12:18:20 pm »
Ну, например из полезного там еще есть алгоритм избавления от левой рекурсии в грамматике.
Это вредный алгоритм.

Иногда полезный.

Алгоритм парсера должен поддерживать левую рекурсию. Мой поддерживает.
Где можно прочитать/посмотреть/пощупать?

15
Общий раздел / Re: Про парсер и лексер.
« : Сентябрь 11, 2012, 11:57:06 am »
А по тему - в АхУльмане многого (из по крайней мере актуального-современного) нет. Но и многое есть. Как справочник он хорош. Только не надо им ограничиваться.
На весь толмуд там полезного десяток страниц про регулярные выражения и трансформации ДКА. Больше ничего полезного там нет.
Ну, например из полезного там еще есть алгоритм избавления от левой рекурсии в грамматике.

Страницы: [1] 2 3 ... 133