[00:04:26] <valexey> да. синтаксис конечно извратен: d(Files.Directory).FileList
[03:33:56] <vlad2> Угу. Зато L1.
[10:45:01] <valexey> vlad2: самое смешное, что строго говоря, синтаксис Оберона формально не является LL1
[10:53:56] <Kemet> ilovb наступает на теже грабли
[10:58:16] <valexey> на которые?
[10:59:03] <Kemet> так в коре они одни на все случаи
[10:59:28] <valexey> э?
[11:00:25] <Kemet> оказывается новый компилер АО поддерживает значения по умолчанию для параметров, и подозреваю, что в комментах может скрываться прагма, но это надо пробовать
[11:01:00] <valexey> какой богатый AO однако
[11:01:14] <valexey> вирт бы не одобрил :-)
[11:01:21] <Kemet> ну там в коре одни тайномассоны, и любые попытки исправит бб или показать что в бб есть проблемы приводят к мегсрачу с забаниванием
[11:02:07] <valexey> это да...
[11:02:20] <Kemet> причем срач начинают разводить сами масоны
[11:03:03] <Kemet> а виноватыми как всегда становится ilovb
[11:03:29] <valexey> ну, это как аллергическая реакция - отек начинается из за ответа имунной системы на наличие нейтрального агента.
[11:05:04] <Kemet> надо начать изучать компилятор АО, подозреваю, много открытий чудных таит он
[11:05:21] <valexey> реверс-инжиниринг языка :-)
[11:06:10] <Kemet> аха, перепишу его в процедурном стиле и по-русски, щоб вникнуть ), а то некоторые термины, типа Дфч? z yt cjdctv ekfdkbdf.
[11:06:25] <Kemet> Lax
[11:06:44] <Kemet> мне не срвсем понятны
[11:07:04] <valexey> дайошь актуальный репорт по AO!
[11:07:29] <Kemet> lax - склонный к поносу
[11:07:48] <Kemet> b rfr tnj gjyznm d rjvgbktht xnj pyfxbn )
[11:08:00] <Kemet> и как понять что это в компилере значит
[11:08:39] <Kemet> типа дальше идет дерьмецо и надо почистить ) чтоли
[11:08:50] <valexey> это что-то общепринятое компиляторское
[11:08:56] <valexey> точнее даже парсеровское
[11:09:14] <valexey> "Computer program input generally has some structure; in fact, every computer program that does input can be thought of as defining an ``input language'' which it accepts. An input language may be as complex as a programming language, or as simple as a sequence of numbers. Unfortunately, usual input facilities are limited, difficult to use, and often are lax about checking their inputs for validity."
[11:09:42] <valexey> 3) нестрогий, необязательный, распущенный, расхлябанный
[11:09:50] <valexey> 5) неясный, неопредёленный, смутный, неточный
[11:09:52] <valexey> вот
[11:10:47] <valexey> так что это даже не спец. термин
[11:12:19] <Kemet> угу
[11:13:22] <Kemet> вообще новый компилер читается как песня, в отличии от основанных на op2 и ранних, но таки местами термины мне всеж таки не знакомы и приходится рыться в коде, чтоб понять логику
[11:14:16] <valexey> op2 - это какой-то трешак
[11:14:36] <valexey> особенно его вариация для КП в ББ
[11:16:38] <Kemet> )) сложно понимаемый, там используется единая струкитупа, и в связи с этим постоянная трудноуловимая модификация одних и тех же данных, пока в каждую строчку не внихнешь... сущи весла. вчера смотрел компилятор фпк, блииин, по ому же принципу таблица символов
[11:17:09] <Kemet> fpc
[11:17:10] <valexey> Виртова школа!
[11:18:34] <Kemet> угу, економят на памяти типа, под каждую сущность свою спцифическую структуру замутить видимо сложно, на фоне этого fox и м3 это песня
[11:18:57] <valexey> когда читаю код копилятора КП в ББ, такое ощущение что этот код не человеком писан, а посредством кодогенератора сгенерен.
[11:19:29] <Kemet> академики же! математики!
[11:19:54] <Kemet> код op2 математически выверен и оптимален
[11:20:12] <valexey> только в случае КП в ББ - глючен. а так ничего, да :-)
[11:21:00] <Kemet> ну глюки и баги внесли нематематики!
[11:21:28] <Kemet> математики не могли запутаться в столь простом коте
[11:21:40] <valexey> :-)
[11:24:29] <Kemet> я както хотел пошукать код роасскраски и фолдинга в лазарусе - увидел там для этого авл-деревья и закроыл нафик, разбираться в этом месиве совершенно не хотелось
[15:51:03] <valexey> Kemet: а у них там что, это дело не было абстрагированно/
[15:51:04] <valexey> ?
[15:51:27] <valexey> вроде FreePascal имеет все необходимые инструменты для этого.
[15:57:28] <Kemet> ну они решили что авл-деревья рулят )
[15:58:58] <Kemet> оно понятно - штука мощная и универсальная, но как трудно в нем копаться
[16:01:42] <valexey> дык, авл это ж всего лишь реализация чего-либо (кстати, я не уверен что красно-чорное дерево будет сильно хуже), реализация некой абстракции
[16:02:06] <valexey> меня вот ничуть не волнует что в stl под std::map может оказаться АВЛ-дерево.
[16:02:59] <Kemet> ну вот они через это дело и реализуют, кстати, для когото все эти деревья - наще все, у меня есть сотрудник - от везде их пихает, а потом другие матерятся
[16:03:49] <valexey> не понимаю проблем - один раз релизовать это дерево и всё. потом только юзать.
[16:04:46] <valexey> эмм.. тем более что прям таки везде пихать деревья эти часто смысла нет. разница в производительности может быть нулевая для ряда случаев, а то и вовсе отрицательная
[16:05:02] <Kemet> ды так и есть, в этом нет проблем, проблемы в наполнении смыслом всего этого, надо держать в голове, для какой структуры данных данных что где находится
[16:06:11] <valexey> э?
[16:07:33] <Kemet> ну вот я счас переписываю компайлер, в старом было все на деревьях, счас я для каждой сущности завел свою структуру, и я вижу нужгые мне имена, вместо лево, право и тд
[16:11:51] <valexey> а-а.. у вас деревья интрузивно использовались
[16:17:18] <valexey> Сестра делится радостью от грамматики Оберона-2:
[16:17:31] <valexey> [16:03:11] <essy> =)
[16:14:17] <essy> ужас, блин
[16:14:23] <essy> Этот ваш "компактный" оберон
[16:14:26] <essy> вот это вот:
[16:14:27] <essy> DeclSeq = { CONST {ConstDecl ';' } | TYPE { TypeDecl ';' } | VAR { VarDecl ';' }} {ProcDecl ';' | ForwardDecl ';'}
[16:14:32] <essy> становится вот эти вот:
[16:14:35] <essy> DeclSeq = CONST {ConstDecl ';' } ForwardDecl ';'
DeclSeq = TYPE { TypeDecl ';' } ForwardDecl ';'
DeclSeq = VAR { VarDecl ';' } ForwardDecl ';'
DeclSeq = CONST {ConstDecl ';' } ProcDecl ';'
DeclSeq = TYPE { TypeDecl ';' } ProcDecl ';'
DeclSeq = VAR { VarDecl ';' } ProcDecl ';'
DeclSeq = ProcDecl ';'
DeclSeq = ForwardDecl ';'
DeclSeq = CONST {ConstDecl ';' }
DeclSeq = TYPE { TypeDecl ';' }
DeclSeq = VAR { VarDecl ';' }
[16:14:44] <valexey> :-D
[16:14:48] <essy> И это я ещё не раскрыла { } - которое у них 0 или более раз...
[16:14:57] <essy> Ненавижу "компактные" описания грамматик...
[16:15:07] <essy> в смысле, я-то дальше раскрывать и не буду
[16:15:15] <essy> просто это нихрена не компактно, если ты пишешь свой парсер.
[16:15:23] <essy> Т.е. это компактно, но при это запутано и через жопу )
[16:15:27] <essy> и легко ошибиться
[16:52:51] <Kemet> valexey: так в fpc, компиляторах ethz кроме fox, и в куче других вещей, и глядя на структуры и синтаксис нихрена о семантике не узнаещь, а вот в м3 или фоксе - синтаксис однозначно дает представление и о семантике, и это хорошо, мне это нравится, потому что порог вхождения существенно ниже
[16:55:20] <valexey> Kemet: а где бы на этот фокс посмотреть?
[16:56:02] <Kemet> ну грамматика как граматика, она и должна так разворачиваться, зато модуль, процедура и запись/объект там разбирается одним и тем же способом
[16:56:18] <Kemet> так в А2 fox этот
[16:56:37] <valexey> а где A2 текущий взять? Точнее исходники
[16:56:51] <Kemet> в свн вестимо )
[16:57:16] <valexey> c секретного, да? :-)
[16:57:19] <Kemet> я на гит транслировал, но потом чето поломалось
[16:57:48] <valexey> url?
[16:58:55] <Kemet> https://github.com/metacore/A2OS но с тех пор много воды и багов утекло
[16:59:22] <Kemet> с префиксом Fox
[17:01:33] <valexey> ну, мне саму концепцию понять
[17:02:31] <valexey> Ааа!!1 Нормальные имена файлов компилятора!
[17:06:37] <Kemet> там вообще нормальные имена, оно изначально разрабатывалось для снижнения порога вхождения, типа как набегут оберонщики да как понапишут бакэндов. не набежали, как всегда
[17:11:44] <valexey> для перехода на другой инструмент оный инструмент должен давать выигрыш (в производительности труда, или по какому-то другому важному параметру). Причем выигрыш не в два даже раза, а минимум на десятичный порядок.
[17:13:12] <valexey> чего, в случае оберонов, вроде бы не наблюдается.
[17:13:18] <valexey> мягко говоря
[17:16:01] <valexey> /me борется с antlr
[17:16:32] <Kemet> переписываю fpc на активный оберон
[17:17:08] <valexey> будет компилятор фрипаскаля писанный на активном обероне?
[17:17:50] <Kemet> ага, переисаный, под А2, а потом буду думатьь как бакэнды к фоксу прикрутить
[17:18:16] <Kemet> ради них родимых и затеял
[17:20:37] <valexey> гм. а не замучаешься потом новшества из fpc перетаскивать в A2 ручками?
[17:21:20] <Kemet> а мне не нада новшества, только в бакендах фиксы, а ето не трудно приготтовой системе
[17:22:22] <valexey> ну, тогда да.
[17:23:20] <Kemet> если поставить цель - обжект паскаль под А2, тогда да, надо, но все равно, первоначальная работа самая сложная, поддержка намного проще
[17:24:16] <Kemet> и мне не хватает директив условной компиляции, да, чтобы не сильно отличалось от оригинала пока
[17:25:37] <Kemet> а потом буду переписыватьт фокс в процедурном стиле, чтоб тоже досконально вникнуть, а потом буду это всё дружить )
[17:25:53] <valexey> ой, ты еще и фокс переписывать будешь?
[17:26:17] <Kemet> ну чтоб разобраться детально - самый лучший для меня метод )
[17:26:47] <Kemet> я частоенько такой хреней страдаю )
[17:30:48] <valexey> ну, по сути у тебя получится промышленный форк AO
[17:31:28] <Kemet> почему промышленный
[17:32:30] <valexey> потому что на лицо все признаки - например более консервативное развитие относительно внесения экспериментальных новшеств в язык.
[17:34:27] <Kemet> но вообще в процедурном стиле както трудновато, да, без объектов-то (
[17:35:19] <valexey> ну, если в объектах нет виртуальных функций, то разница между процедурным и объектным стилем примерно нулевая
[17:38:01] <Kemet> так модули, модули, приходится импортировать кучу и кейсы , кейсы, виты
[17:39:35] <Kemet> либо писать огромную процедуру, где ветвиться в зависимости от типа, или куча модулей
[17:40:06] <valexey> а, таки там используются виртуальные методы?
[17:40:11] <Kemet> то что в объектах было бы одной строчкой
[17:40:11] <valexey> и наследование соответствующее.
[17:40:29] <Kemet> угу
[17:40:34] <valexey> ну, именно тут ничто не мешает воткнуть указатели на функции в виде полей структуры :-)
[17:40:43] <valexey> стандартный такой C-way
[17:44:03] <valexey> но это не шибко процедурный стиль выходит. это эмуляция ОО средствами процедурного языка. :-)
[17:44:14] <valexey> точнее это ООП средствами процедурного языка :-)
[17:44:19] <Kemet> вот именно
[17:44:42] <valexey> можно пойти дальше - пусть каждый рекорд хранит у себя переменную-ссылку на список функций присущий именно ему :-)
[17:44:49] <valexey> получится vtable руками :-)
[17:45:33] <Kemet> вирт не одобрит
[17:46:19] <valexey> ну, у вирта свой велосипед был. с WITH
[17:46:33] <valexey> правда потом он его выпилил в пользу еще менее читабельного варианта :-)
[18:31:23] <valexey> гребаный antlr виснит нахрен при попытке запустить отладку грамматики
[18:49:49] <Kemet> а зачем он тебе
[18:57:17] <valexey> для анализа дерева разбора жабаскрипта
[19:01:00] <Kemet> эх блин интересно, а как в етх компилер java писали
[19:01:20] <valexey> а какие проблемы?
[19:01:26] <valexey> это ж не жабаскрипт ;-)
[19:02:14] <Kemet> да вот нету его в открытом доступе, вот какие проблемы, а хотца глянуть
[19:02:32] <Kemet> че оним там юзали
[19:02:44] <valexey> ну либо руками, либо Coco/R
[19:02:50] <Kemet> писалои не руками
[19:03:03] <Kemet> там было написано - с использованием паттернов
[19:03:42] <Kemet> кстати, у них еще был какойто Depot
[19:04:07] <Kemet> или Depo
[19:05:59] <valexey> ну, та жаба с которой они работали к нонешней жабе имеет весьма опосредованное отношение
[19:06:13] <valexey> Ну, примерно как Оберон-07 к AO :-)
[19:06:17] <Kemet> Depot4
[19:07:37] <valexey> http://www.tools.vlampe.de/depot4/Depot4.html
[19:07:39] <Kemet> не, это Дрезден оказывается, но Оберон/F для депота есть
[19:07:40] <valexey> ?
[19:08:33] <Kemet> ага оно
[20:13:29] <valexey> antlr отожрал гиг памяти и продолжает жрать и работать.
[20:13:34] <valexey> силится сгенерить парсер
[20:13:54] <valexey> vlad2: давай твой компилятор увековечим :-)
[20:14:02] <valexey> в научной работе :-D
[20:35:47] <Kemet> шош он так тормозит
[20:38:43] <valexey> ощущение, что время генерации парсера у него экспоненциально зависит от числа правил.
[20:38:59] <valexey> уже 50 минут генерит парсер
[20:39:33] <valexey> и сожрало 1380 метров озу
[20:41:27] <Kemet> ну это конечно быстрее, чем руками писать )
[20:43:01] <valexey> ну.. э.. сколько-то ручной один фиг имеется. надо как минимум изложить ему грамматику в понятном ему виде
[20:43:19] <valexey> + воткнуть туда код (ведь нам же не просто распознать надо, а что-то еще полезное сделать)
[20:43:30] <valexey> + побороться с особенностями оного генератора
[20:43:54] <valexey> (а если нужно человеческую диагностику ошибок прикрутить, то песня становися совсем веселой)
[20:44:32] <jordan36957> Какая же там грамматика заковырестая, если полтора гига надо. :-)
[20:45:02] <valexey> да не особенно заковыристая. 108 правил
[20:45:51] <valexey> о-о. уже 1522 метра!
[20:46:07] <Kemet> кста, для fpc пилят jvm бакэнд
[20:46:10] <valexey> блин, там ограничение сейчас в 2 гига, ужель памяти не хватит?
[20:46:24] <jordan36957> Как перевали за 4 гига отпишись :-) Программа 32 или 64 битная?
[20:46:29] <valexey> ну и правильно делают - будут на паскакале под андроид писать
[20:46:40] <valexey> jordan36957: программа jvm'ная
[20:46:43] <Kemet> они и так пишуь
[20:47:12] <valexey> по умолчанию в jvm моей версии куча лимитирована 256 мб, я выставил лимит сейчас в 2 гига.
[20:47:16] <valexey> но боюсь не хватит
[20:47:34] <valexey> (на ноуте всего 4 гига, и семерка половину сожрала сама)
[20:47:52] <Kemet> штрашти какие, фтопку
[20:48:31] <valexey> да ладно. если грамматика не шибко сложная, то лучше antlr я ничего не видел. ибо оно позволяет наглядно именно что грамматику отлаживать.
[20:48:39] <Kemet> мож ты где ошибся в правилах
[20:48:45] <valexey> наврятли.
[20:49:12] <valexey> я постепенно накатывал изменения правил на версию где все работает хорошо, и видел как оно постепенно замедлялось.
[20:52:33] <valexey> пока оно там генерится, читаю папир про обработку изображений. точнее про реконструкцию отдельных отсутствующих кусков изображения
[20:52:52] <valexey> и это надо будет реализовать. и чтобы работало в реалтайма 30-60 кадров в секунду
[21:12:50] <valexey> 1651 метр
[21:13:08] <valexey> между прочим, это он пока только анализирует грамматику. к кодогенерации еще не приступал :-)
[21:21:39] <valexey> теперь все 4 ядра чем-то на 100 процентов загрузил. агония? :-)
[21:25:57] <valexey> всё. память кончилась. это была агония, да.
[21:26:50] <jordan36957> И сколько времени сие продолжалось?
[21:27:05] <valexey> часа полтора-два.
[21:27:35] <jordan36957> :-S
[21:29:18] <jordan36957> Программа не сохраняет проделанную работу? Если ещё раз запустить, будет заново парсить?
[21:30:46] <valexey> если б оно еще и сохраняло, то работало бы раз в 10-100 медленней.