Здравствуйте, WolfHound, Вы писали:
V>>Так и что я "несу"-то?
V>>Покажешь хоть раз или нет?
WH>Да уже много раз показывал.
Т.е. не можешь.
V>>Хуже-лучше определяется только по удовлетворению исходным требованиям.
V>>Если у них не стояла задача разработать ИДЕ для целевых языков программирования, то ты НЕ можешь сравнивать по таким требованиям.
WH>WH>NetBeans IDE parses C++ with ANTLR.
NetBeans IDE изначально точно такой же учебный студенческий проект, как и ANTLR.
V>>Они и над бинарными данными чудесно парсинг делают.
WH>Если для разборы бинарного формата нужен генератор парсеров, то это означает что формат придумывал конченый неадекват.
ASN.1 смотрел?
А какие профили кодирования смотрел?
V>>У них стояла задача разработать учебную визуальную модель представления грамматик, по которой (модели) можно визуально отлаживаться в процессе проектирования этих грамматик. В этом плане их результаты лучше твоего, бо у тебя нет таких визуальных ср-в отладки грамматики, как в ANTLR:
WH>ИДЕ с подсветкой, навигацией и автокомплитом почти есть. Сейчас Влад заканчивает бутстрап типизации. Как закончит так будет.
WH>Графическое представление грамматики тупо не нужно.
Наоборот. Единственная польза от подобных тулзов — это графическое представление грамматики и соответствующего AST.
Я никогда не пользовал ANTRL для генерации парсера, но несколько раз пользовал для отладки грамматики.
Ты не обратил разве внимания, что даже если нет всяких удобных графических ИДЕ с визуализацией, то тулкиты-парсеры под С++, например, порой имеют функциональность сбрасывать в картинку-граф "дамп" AST? Благо graphviz уже давно стандарт де-факто для таких вещей.
WH>Там по сравнению с текстом нет никакой новой информации.
Так у тебя дамп AST в виде текста? Или никакого дампа?
Ну и по самой грамматике — ес-но новой информации нет.
Есть другое представление имеющейся.
WH>А то что действительно нужно у нас есть.
WH>Но ты же даже не смотрел инструменты нитры.
Мде...
Напомню, что ты общаешься на форуме программистов, которые каждый божий день работают в какой-нить среде разработки, т.е. прекрасно понимают как минимум целевую задачу Нитры. Т.е., прекрасно понимают сценарии, которые при этом происходят.
V>>А профайлер грамматики у тебя есть?
V>>Каким-либо образом можно узнать в Нитре, на сколько операций парсинга стало больше-меньше на тестовом примере после изменения грамматики?
WH>Никто не просил. Вот и не сделали за ненадобностью.
Ясно.
Узок их круг, страшно далеко они от народа. (С) Герцен.
Ок-ок, шутю. ))
Это всё не принципиально, ес-но.
Профайлер, свистелки и перделки спокойно прикручиваются при наличии большого круга пользователей и некоторого трафика запроса от них...
Дело в самом "ядре", сверху которого накручиваются потом примочки, верно?
Потому что чем дальше, тем меньше путей к отступлению.
Не переиграешь потом ничего в ядре, инерционность будет большая.
V>>Там вообще своё восстановление написать можно, бо кишки Бизона открыты.
WH>Ты вообще понимаешь какой неадекват ты тут несёшь?
Да ну? Это я, значит, по обрывкам информации ориентируюсь и считаю, что владею ею? ))
WH>>>>>Это пользователь должен описывать правила восстановления руками. Ахринеть.
WH>>>>>1)Это куча мутной работы.
V>>>>Это примерно такая же работа, как в языке расширенных регулярных выражений отличать конечные правила от промежуточных.
WH>>>Что за бред опять?
V>>Что именно ты тут опять не понял?
WH>Я понял, что ты не в состоянии держать контекст разговора.
Контекст тут один — формальные грамматики.
WH>Я вернул то что ты потёр. А теперь попробуй объяснить, как одно связано с другим?
Ты мне можешь один раз прямо ответить на прямой вопрос — ты в ВУЗ-е учился на программиста или нет?
Это уже не первая странность в этом и прошлых обсуждениях.
Мне иногда сложно сориентироваться, в каком виде что тебе давать...
Вещаю материалом 3-го курса:
Существует формальный язык описания регулярных выражений, у него есть три базовые операции:
— сцепление;
— дизьюнкция;
— повторение (0..oo);
В языке расширенного описания регулярных грамматик могут быть дополнительные операции:
— подстановка;
— повторение (1..oo, иногда M..N);
— отрицание символа;
— описание символа многократно (произойдёт автоматическая дизьюнкция);
— отрицание подстановки;
Я говорил о первом или последнем из расширений, когда в записях одних правил можно использовать другие.
Тут простые ограничения — одни и те же правила не должны одновременно расти справа или слева.
Т.е., при наличии по какому-то из правил рекурсии, она должна быть строго праволинейная или строго леволинейная (поэтому такие грамматики и зовут регулярными).
В такой системе часть правил может существовать сугубо для подстановки "общей части" для целевых правил, т.е. требуется отличать целевые правила от вспомогательных. В подстановке могут участвовать как целевые правила, так и не целевые.
В результирующем ДКА пометка конечного состояния (выхода) должна стоять только у целевых лексем, ес-но.
Т.е. в исходном описании грамматики необходимо как-то особо помечать целевые правила.
WH>для сравнения
WH>WH>Я тут бьюсь с ANTLR4, который отдельные файлы с VHDL кодом разбирает ужасающе долго (со скоростью в 8К байт в секунду и даже меньше). Это, натурально, беда.
WH>http://thesz.livejournal.com/1486500.html
1. Java.
2. Нисходящий.
3. Сама грамматика может быть кривая и косая.
Последнее — ключевое. На парсер надо возлагать как можно меньше работы. Это тот самый trade-off, который есть во всех компиляторах — что делается ручками, а что отдаём на откуп автомату.
V>>Итого, ЛЮБОЙ самый первый вариант/макет ЛЮБОГО парсера будет подвергнут неадекватной обструкции сходу.
WH>Адекватной. Ибо ты утверждаешь, что ничего быстрее GLR нет.
Враки.
Или ссылку на такое утверждение в студию.
Я утверждал, что на однозначных цепочках получал скорость близкую к обычному LR-разбору.
WH>Вот поэтому тебе и нужно соответствовать.
Соответствовать чему?
Твоей лени ума? Нежеланию оторвать свою виртуальную задницу? ))
У меня была задача найти заинтересованных пообсуждать найденные мною трюки буста производительности параллельного разбора.
Потому что вот я рядом в сообщении дал ссылки — нашел на днях описание похожих трюков, но на тот давний момент их тупо не было в сети.
Моё желание найти с кем обсудить было вполне объяснимым, не?
Да ты хотя бы с собой сравни, во что вы все форумы тогда превратили с ПЕГ/Пакратом.
В этом плане я выступал на многие порядки скромнее — сначала пытался найти заинтересованных в обсуждении конкретных алгоритмов.
В общем, для адекватного обсуждения требовалось желание собеседников "втыкать" в тему.
Вы с Владом втыкать отказались принципиально.
По причине "матан — для дебилов".
Вот есть серверное приложение. Вот одновременно сотни-тысячи клиентов гонят трафик на сервер, а он этот трафик ест прямо по ходу пьесы.
Средняя длина сообщения — в р-не десятков-сотен килобайт, иногда единицы метров.
Как сам думаешь, тысячи одновременно работающих парсеров Эрли выживут на таких длинах сообщений? ))
Понимаешь... Ты же вроде постоянно пытаешься претендовать на понимание предмета.
Поэтому, я обычно считаю, что коль дал тебе некую ВАЖНУЮ вводную — ну вот например про длинные неоднозначности и среднюю длину сообщений, и отсутствие роста "параллельности" с длиной цепочки, то тем самым дал исчерпывающую инфу о характере задачи. Хотел бы в ответ в этом месте видеть проблески понимания...
WH>Хотя на практике скорость работы GLR это 80 мегабайт в час.
Это бред бредовый.
Разбор естественных языков, да еще по таблицам синонимов.
Если ты принимаешь технические решения под влиянием столь чудовищной ангажированности — то ты их не принимаешь вовсе. Ты тыкаешь пальцем в небо.
V>>Тебе надо было смотреть на GLR еще тогда, когда я именно что предлагал посмотреть на этот алгоритм как эффективную альтернативу Эрли.
WH>Эрли в отличии от ГЛР парсер нисходящий. И поэтому отлично сочетается с основным парсером который тоже нисходящий.
Восходящие парсеры отлично вызываются из нисходящих, особенно писаных методом рекурсивного спуска.
WH>И если на основной парсер внимательно посмотреть, то он фактически ослабленный Эрли. И за счёт этого ослабления работает намного быстрее.
Если ты про Пакрат и у вас сохранён именно алгоритм Пакрата — то не совсем. Пакрат запоминает удачные ветки разбора, Эрли все. Это принципиально. Держим это в уме и пытаемся ставить задачу.
* Вот я работаю в ИДЕ каждый божий рабочий день. Иногда в разных, иногда в принципиально разных.
* Когда от ИДЕ требуется наибольшее быстродействие парсинга? — верно, в моменты активного исправления исходника.
* насколько валиден исходник в такие моменты активного исправления? — я бы дал валидность в 10%-20% случаев исправлений, не выше. В остальное время исходник невалиден. Процесс набивки/перетасовки он такой, угу.
* выходит так, что необходимо добиться наилучшего быстродействия при невалидном исходнике и относительно достаточного при валидном.
А у тебя что? У тебя ровно наоборот — взят неадекватный алгоритм для невалидного исходника и шустрый для валидного.
Но этого мало — по твоим словам выходит так, что в случае ошибки парсинг запускается повторно. И это основной сценарий в процессе той самой активной набивки текста???
Скажем так. Мои замечания относительно твоего "поиграться с кодогенерацией" в алгоритмах масштабирования — это были цветочки. ))
А вот тут уже серьезные такие ягодки. Да это полный П.
Твоё самомнение сыграло с тобой совсем злую шутку... а уже и отступать некуда...
Вот неси теперь свой крест, выкручивайся.
Пока что всё выглядит так, что ты ДО СИХ ПОР не понял, почему я тогда настойчиво предлагал, таки, взглянуть вам на GLR.
ы-ы-ы
Хотя, кое-какие вещи ты уже начал понимать, смотрю...
А то надоел этот бесконечный парадокс бла-бла с тобой все годы, положа руку на...
V>>Потому что иначе получается так, что если на RSDN на блюдечке с голубой каёмочкой кто-то выложил реализацию Эрли, то ты её и асилил.
V>>А если тебе так же под нос не поставили — то уже и нет.
WH>Ох. Ещё раз: Мой Эрли к тому Эрли отношения не имеет от слова совсем.
Ага. Т.е., любой алгоритм, таки можно "допилить"? ))
У меня основная претензия к Эрли — что кол-во занимаемой памяти/степень параллельности начинает расти с ростом длины цепочки.
GLR этим не страдает вовсе. У него чем "шире" разбор, тем короче этот участок.
Для большинства ЯП я бы дал 99% цепочек однозначными (по крайней мере так можно описать грамматику).
И получал бы неоднозначности (или отсутствие разбора) только на ошибках.
V>>сейчас такая сумбурность/непоследовательность — это уже ой. ))
WH>Ты последний кто может говорить про сумбурность и непоследовательность.
Слова "последний" и прочее лучше запрячь куда-нить туда, откуда ничего не отсвечивает.
Бо вы своей модерской безнаказанностью переходите границы сугубо уже бытового плана.
Это не тебе решать, в любом случае.
Форум публичный, ты сверкаешь нелогичностью и незамысловатой демагогией на весь мир.
Когда тебя на нелогичности ловишь, ты пытаешься замылить хамством, горлом и еще большей демагогией.
Чуть что — переход на личности. ))
А не работает это.
Никто тебе не верит и за клоуна считают.
Ты когда-то (до 2005-2006-го примерно) нарабатывал авторитет, потом быстро растерял.
Потому что ты стал ангажирован. Всегда.
Не объективен. Не уравновешен.
С тех пор ты лично поучаствовал в изгнании с форума полезных (намного полезнее тебя) коллег.
Любые твои технические решения, в которые мне доводилось вникать — практически всегда ошибочны и вызваны как пробелами по азам предметной области, так и по способностям к анализу/постановке технических задач и организации процесса разработки.
Даже в том обсуждении про БНФ ты не понял очевидной вещи — это возможности автоматической трансформации грамматик.
Я помню весь твой неадекват по этому поводу, угу.
Примерно как здесь.
Хотя задача реально востребована.
Просто ты НЕ понял даже самой задачи.
А людям для обработки нужно AST, которое удобное для банального понимания.
Но часто приходится подвергать грамматику факторизации/коррекции и получается уход от первоначальной идеи.
С AST по изменённой грамматике бывает работать неудобно.
Задача обратного отображения распаршенных данных на заданное изначально (до факторизации) AST — более чем востребована.
Мне так и не удалось донести тогда до тебя эту простую мысль.
Твои ответы — "задавай сразу алгоритм парсинга в ПЕГ" — демагогичны и показывали лишь дилетанство/некомпетентность.
В общем, ты часто не понимаешь и половины текста, который тебе говорят.
Вернее — и не хочешь понимать.
У тебя одна и та же отмазка, хотя тебе уже под сраку лет — "если я что-то не понимаю, то человек несет бред" (С).
Ничему тебя жизнь не научила.
В этом обсуждении я проржал, конечно. Много и часто.
Реально — это было забавно, спустя десятилетие наблюдать как ты начинаешь "втыкать" ну хоть в что-то из того, что я писал тебе, будучи намного младше, чем ты сейчас.
Сплошное ы-ы-ы, как грится.
Ладно. Как по мне, для сообщества IT ты человек уже потерянный.
Несерьезный в работе, несерьезный в обсуждении.
По верхам. Шапкозакидательство. Бесконечные отмазки и бесконечная демагогия.
Ты убил в себе специалиста. Давно. А так неплохо начинал лет 15 назад...
Как грится — вот вам влияние черт характера на успеваемость. ))
Кароч, в этом обсуждении могу похвалить — ты понял ОЧЕНЬ много.
В сравнении с прошлыми годами.
Выбесил неоднократно своим хамством, конечно, но оно того стоило.
Собсно, я хотел увидеть сам этот прогресс.
Потому что этот прогресс и есть самое забавное, будучи наложенным на твоё предыдущее напыщивание.