Re[9]: Новый PEG-парсер. Тема интересна?
От: tmp4857  
Дата: 05.05.11 02:37
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Брать деньги за работу — это во все времена было и будет очень даже здорово. Главное чтобы их дали. Вот во втором я сильно сомневаюсь .


Вот в том и проблема Деньги на развитие никто давать не хочет, а потом жалуются что все программы кривые и тормозные
Re[9]: Новый PEG-парсер. Тема интересна?
От: WolfHound  
Дата: 05.05.11 09:22
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Это оно в вашей реализации теряется, потому что Wolfhound не сохраняет к каждому оптимизированному правилу (т.е. к каждому вхождению элементов choice/sequence) всю цепочку подстановки исходных. Это легко исправить.

Ты опять ни слова не понял из того что написано, а делаешь глобальные выводы.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[9]: Новый PEG-парсер. Тема интересна?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.05.11 11:23
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Это оно в вашей реализации теряется, потому что Wolfhound не сохраняет к каждому оптимизированному правилу (т.е. к каждому вхождению элементов choice/sequence) всю цепочку подстановки исходных. Это легко исправить.


Не уверен, что ты прав. Дело в том, что список правил вычисляется динамически (если не ошибаюсь).

В общем, тут нужно или код смотреть, или Wolfhound-а спросить.

Wolfhound! Ау!
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Новый PEG-парсер. Тема интересна?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.05.11 11:24
Оценка:
Здравствуйте, WolfHound, Вы писали:

V>>Это оно в вашей реализации теряется, потому что Wolfhound не сохраняет к каждому оптимизированному правилу (т.е. к каждому вхождению элементов choice/sequence) всю цепочку подстановки исходных. Это легко исправить.

WH>Ты опять ни слова не понял из того что написано, а делаешь глобальные выводы.

Ты лучше по существу ответь. Распиши ситуацию. А то ты, как всегда, экстремально краток в своих высказываниях.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Новый PEG-парсер. Тема интересна?
От: vdimas Россия  
Дата: 05.05.11 11:30
Оценка:
Здравствуйте, WolfHound, Вы писали:

V>>Это оно в вашей реализации теряется, потому что Wolfhound не сохраняет к каждому оптимизированному правилу (т.е. к каждому вхождению элементов choice/sequence) всю цепочку подстановки исходных. Это легко исправить.

WH>Ты опять ни слова не понял из того что написано, а делаешь глобальные выводы.

Ды ну тебя, ты от темы постоянно уходишь на обсуждение собеседника. У вас реально так и есть — теряется полная история подстановок. И называть эту банальщину "глабальными выводами"..? Да еще Влад заостряет на этом внимание? Постеснялись бы. Это такой фактически стандартный косяк человека, первый раз берущего эти шашки в руки. А лечится легко, заметь. Дольше обсуждать.

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

Ну и плюс замечания типа этого:

Только так, чтобы он АСТ создавал аналогичное (с тем же количеством веток и той же детализацией). На нем и протестируешь.

Показывают наглухо непонимание тематики. Конкретно того, где заканчивается ответственность парсера, и начинается прикладная обработка его сигналов. Парсер, который будет выдавать данные лишь в виде своей собственной реализации AST, не особо интересен. Вернее, не интересен вообще на целом классе применений, где ни о каких черепашьих 4MB/сек не может быть и речи, так же как не может быть речи о построении некоей "промежуточной" модели, бо само построение модели отнимает до половины эффективности. Я догадываюсь, что к PEG это вряд ли относится, судя по твоим реакциям, т.е. построение AST на фоне остального происходящего не видно и под микроскопом. Ну тоды скромнее надо быть, в другой раз-то, насчет "переднего края"... PEG хорош своей гибкостью и расширяемостью прямо в рантайм, но вовсе не показателями эффективности. Т.е., его имеет смысл применять в довольно узких областях — где требуется гибкость и не нужна эффективность. Или лень делать факторизацию грамматики, например, а хочется использовать имеющуюся "в лоб".
Re[11]: Новый PEG-парсер. Тема интересна?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.05.11 12:19
Оценка:
Здравствуйте, tmp4857, Вы писали:

VD>>Вот только вряд ли кто-то купит.


T>Вполне возможно. Но глупо самому перекрывать себе такую возможность


Ты волен менять лицензии хоть сто раз на дню.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Новый PEG-парсер. Тема интересна?
От: WolfHound  
Дата: 05.05.11 12:20
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Ды ну тебя, ты от темы постоянно уходишь на обсуждение собеседника.

Какой темы? Ты вообще не понял о чем речь.
Речь о сообщения об ошибках генерируемых парсером.
А ты опять про оптимизацию грамматики.


V>У вас реально так и есть — теряется полная история подстановок. И называть эту банальщину "глабальными выводами"..? Да еще Влад заостряет на этом внимание? Постеснялись бы. Это такой фактически стандартный косяк человека, первый раз берущего эти шашки в руки. А лечится легко, заметь. Дольше обсуждать.

При оптимизации она неизбежно теряется.
Всегда!
Я еще не видел ни одного оптимизирующего компилятора который бы ее не терял.
Ни одного!

V>что он десятки раз делал последние двадцать лет,

Ой напугал.
Десятки раз...
Двадцать лет...
А несешь пургу.
Асимптотику алгоритмов считать не умеешь. Насчитать N^6 в линейном алгоритме это жесть! Запомни шесть проходов это 6*O(N) оно же O(N), а не O(N^6).
Алгоритмы работы с конечными автоматами не знаешь. Чего стоят твои двадцать лет когда ты не знаешь алгоритмы придуманные 40 лет назад и описанные в куче книг.
Чего стоят твои десятки, раз, когда ты предлагаешь на ровном месте создать кучу геморроя ради ни пойми чего. Нахрена мне что-то делать при оптимизации, если я могу просто оставить исходный АСТ в котором все есть.
Я уж не говорю о том что те оптимизации что я делаю нельзя делать без полного предварительного разбора.
Хоть ты тут пускал пальцы веером что можно но так и не сказал как.

V>ИМХО, ваш текущий код выглядит так, будто кол-во технических экспериментов было минимальным, или он еще на некоей начальной стадии. Ну тогда рано было столь много и столь громко утверждать.

Ну давай. Покажи класс!
Образцово показательный код в студию!

V>Показывают наглухо непонимание тематики. Конкретно того, где заканчивается ответственность парсера, и начинается прикладная обработка его сигналов. Парсер, который будет выдавать данные лишь в виде своей собственной реализации AST, не особо интересен.

Ой лол.
Ты вообще нихрена не понял.
Ты бы хоть посмотрел на реализацию Nemerle.Peg. И как там AST создается.

V>Вернее, не интересен вообще на целом классе применений, где ни о каких черепашьих 4MB/сек не может быть и речи,

Ну во первых покажи мне парсер который на грамматике C#4 хотябы столько дает.
Ну, хоть один.
Только не забудь про АСТ. Без АСТ парсер никому не нужен.

V>так же как не может быть речи о построении некоей "промежуточной" модели, бо само построение модели отнимает до половины эффективности.

Кому нахрен нужен парсер без АСТ?

V>Я догадываюсь, что к PEG это вряд ли относится, судя по твоим реакциям, т.е. построение AST на фоне остального происходящего не видно и под микроскопом.

Ну да... то-то мой парсер всякие там ANTLR'ы рвет как тузик грелку.

V>Или лень делать факторизацию грамматики, например, а хочется использовать имеющуюся "в лоб".

Ну давай. Засунь грамматику C#4 в LL(1)...
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[12]: Новый PEG-парсер. Тема интересна?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 05.05.11 12:24
Оценка:
Здравствуйте, VladD2, Вы писали:

T>>Вполне возможно. Но глупо самому перекрывать себе такую возможность

VD>Ты волен менять лицензии хоть сто раз на дню.

Лицензия на уже опубликованный код от этого не поменяется.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[13]: Новый PEG-парсер. Тема интересна?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.05.11 13:35
Оценка:
Здравствуйте, tmp4857, Вы писали:

VD>>Что за оптимизации ты делаешь? Что за алгоритм используешь? Есть ли мемоизация?


T>Пока практически никаких.

T>Пока нет

Чтобы создать работающий генератор без оптимизаций у Вольфхаунда ушла где-то неделе или две (и это при том, что он в макросах не особо разбирался на то время). А на оптимизации еще год. В прочем, он не особо торопился.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Новый PEG-парсер. Тема интересна?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.05.11 13:36
Оценка:
Здравствуйте, tmp4857, Вы писали:

VD>>Под BSD наверняка кому-то пригодится, если доведешь до ума.


T>Почему именно BSD? Чем она отличается от упомянутой MS-PL и других лицензий?


Она (новая версия, трехстроковая) проще. В прочем MS-PL тоже пойдет. По смыслу они очень похожи.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Новый PEG-парсер. Тема интересна?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.05.11 14:07
Оценка:
Здравствуйте, adontz, Вы писали:

A>Лицензия на уже опубликованный код от этого не поменяется.


Его код пока что ни куда не годен. Без поддержки он тебе тоже будет мало полезен. Так что можно смело менять лицензию на каждый новый комит.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Новый PEG-парсер. Тема интересна?
От: tmp4857  
Дата: 05.05.11 14:17
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Его код пока что ни куда не годен.


Ну это ты зря Парсеры вполне работоспособные. Парсер PEG и парсер шаблонов уже давно бутятся.
Надо только допилить сишную версию до полного функционала и причесать некоторые вещи.
Re[15]: Новый PEG-парсер. Тема интересна?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.05.11 14:20
Оценка:
Здравствуйте, tmp4857, Вы писали:

T>Ну это ты зря Парсеры вполне работоспособные. Парсер PEG и парсер шаблонов уже давно бутятся.


Если у тебя там нет оптимизаций, то первая нетривиальная грамматика поставит твой парсер на колени.

T>Надо только допилить сишную версию до полного функционала и причесать некоторые вещи.


Ну, ну. Сишность тебе алгоритмическую сложность не устранит.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Новый PEG-парсер. Тема интересна?
От: tmp4857  
Дата: 05.05.11 14:25
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Если у тебя там нет оптимизаций, то первая нетривиальная грамматика поставит твой парсер на колени.


Какая, например?
Re[12]: Новый PEG-парсер. Тема интересна?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.05.11 14:34
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Какой темы? Ты вообще не понял о чем речь.

WH>Речь о сообщения об ошибках генерируемых парсером.
WH>А ты опять про оптимизацию грамматики.

Ну, ну, в общем-то вещи связанные. Ты же инлайнишь правила и от того проблема и просходит. Может правда информацию можно как-то протащить?

Потом проблема ведь есть. И она серьезна. Когда правило инлайнится сообщение об ошибке получается полным бредом. Я забыл поставить ";", а мне вываливается 99 правил которые могли бы быть. Это ведь неверное поведение.

WH>При оптимизации она неизбежно теряется.

WH>Всегда!
WH>Я еще не видел ни одного оптимизирующего компилятора который бы ее не терял.
WH>Ни одного!

Дык хорошо бы было подумать как все же обеспечить качественный вывод сообщений и при этом не убить оптимизацию. Может что-то и придумали бы.

WH>Чего стоят твои десятки, раз, когда ты предлагаешь на ровном месте создать кучу геморроя ради ни пойми чего. Нахрена мне что-то делать при оптимизации, если я могу просто оставить исходный АСТ в котором все есть.


Если не ошибаюсь нам с этого мало толку, так как нам надо знать какое правило обломалось. Заинлайненое правило тупо не имеет кода отмечающего их облом. Потому мы и теряем информацию.

Вопрос в том нельзя ли сделать "легкий" код пометки и для инланеных правил?

Ну, или сгенерировать две версии. Одну с инлайнингом, а другую без. Тогда при обнаружении облома в неком более большом правиле его моно было бы запустить еще раз, но уже в неинлайненном виде для сбора точной информации об обломах.

V>>ИМХО, ваш текущий код выглядит так, будто кол-во технических экспериментов было минимальным, или он еще на некоей начальной стадии. Ну тогда рано было столь много и столь громко утверждать.

WH>Ну давай. Покажи класс!
WH>Образцово показательный код в студию!

+1
Да уж. Теоретиков-трепачей у нас очень много.

V>>Вернее, не интересен вообще на целом классе применений, где ни о каких черепашьих 4MB/сек не может быть и речи,

WH>Ну во первых покажи мне парсер который на грамматике C#4 хотябы столько дает.
WH>Ну, хоть один.

Ну, плюсовый, рукописный парсер Майкрософта дает явно не меньше .

V>>Или лень делать факторизацию грамматики, например, а хочется использовать имеющуюся "в лоб".

WH>Ну давай. Засунь грамматику C#4 в LL(1)...

Она на 99% и есть LL(1). Проблема в том, что оставшийся процент требует некислой логики разрешения неоднозначностей которая в LL(х) никак не вписывается.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: Новый PEG-парсер. Тема интересна?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.05.11 14:37
Оценка:
Здравствуйте, tmp4857, Вы писали:

VD>>Если у тебя там нет оптимизаций, то первая нетривиальная грамматика поставит твой парсер на колени.


T>Какая, например?


Например, вот эта. И эта еще ничего. Там многие правила подвергнуты левой факторизации. А если этого не делать, то твой парсер просто ляжет, а наш будет вполне шустренько там работать.

А вообще, достаточно одного правила экспоненциального. Поищи, в этом форуме было обсуждение по этому поводу.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Новый PEG-парсер. Тема интересна?
От: tmp4857  
Дата: 05.05.11 14:42
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Например, вот эта. И эта еще ничего. Там многие правила подвергнуты левой факторизации. А если этого не делать, то твой парсер просто ляжет, а наш будет вполне шустренько там работать.


Посмотрим

VD>А вообще, достаточно одного правила экспоненциального. Поищи, в этом форуме было обсуждение по этому поводу.


Ну это чистая патология. Надо еще очень постараться, чтобы этого добиться.
Re[13]: Новый PEG-парсер. Тема интересна?
От: WolfHound  
Дата: 05.05.11 15:38
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ну, ну, в общем-то вещи связанные. Ты же инлайнишь правила и от того проблема и просходит. Может правда информацию можно как-то протащить?

Он вообще не о том говорит.
Он предлагает:
Оптимизировать саму грамматику по мере ее разбора! Слить с парсером и построением АСТ!
При этом городить какие-то дополнительные структуры данных для того чтобы сохранять информацию о том где какие правила описаны в исходнике.
Короче бред полнейший.

VD>Ну, плюсовый, рукописный парсер Майкрософта дает явно не меньше .

Если бы у меня был хороший бекенд в котором я бы смог гибко настраивать генерируемый код, то парсер разогнался бы очень сильно.
К сожалению .НЕТ унылое говно.
А все остальное еще хуже.

VD>Она на 99% и есть LL(1). Проблема в том, что оставшийся процент требует некислой логики разрешения неоднозначностей которая в LL(х) никак не вписывается.

А теперь попробуй объяснить это пациенту.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[19]: Новый PEG-парсер. Тема интересна?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.05.11 15:50
Оценка:
Здравствуйте, tmp4857, Вы писали:

VD>>А вообще, достаточно одного правила экспоненциального. Поищи, в этом форуме было обсуждение по этому поводу.


T>Ну это чистая патология. Надо еще очень постараться, чтобы этого добиться.


Этого элементарно добьется первый же не очень искушенный в грамматиках и парсерах пользователь. Ну, или искушенный когда начнет создавать сложный парсер.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Новый PEG-парсер. Тема интересна?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.05.11 15:55
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, VladD2, Вы писали:


VD>>Ну, ну, в общем-то вещи связанные. Ты же инлайнишь правила и от того проблема и просходит. Может правда информацию можно как-то протащить?

WH>Он вообще не о том говорит.
WH>Он предлагает:
WH>Оптимизировать саму грамматику по мере ее разбора! Слить с парсером и построением АСТ!
WH>При этом городить какие-то дополнительные структуры данных для того чтобы сохранять информацию о том где какие правила описаны в исходнике.

Я его иначе понял. Как я понял он думает, что информация берется из дерева грамматики (что не верно).

VD>>Ну, плюсовый, рукописный парсер Майкрософта дает явно не меньше .

WH>Если бы у меня был хороший бекенд в котором я бы смог гибко настраивать генерируемый код, то парсер разогнался бы очень сильно.

Это уже из серии полохого тонцора и сам знаешь чего.

WH>К сожалению .НЕТ унылое говно.


Ага. Внешний враг найден...

На самом деле и в дотнете есть ансэйф. На крайням можно перйти на указатели. Но это даст линейное ускорение и оно принципиально не будет сильным.

Потенциально грамматику шарпа можно разбирать очень быстро, так как она близка к LL(1). Но боюсь, что для этого придется генерить ДКА вместо приоритетного выбора, а это приговор расширяемости и гибкости.

VD>>Она на 99% и есть LL(1). Проблема в том, что оставшийся процент требует некислой логики разрешения неоднозначностей которая в LL(х) никак не вписывается.

WH>А теперь попробуй объяснить это пациенту.

Мне этого делать не интересно. Мне хорошо бы расширяеомость получить и если получится еще немного генерируемые парсеры ускорить, так чтобы для реалтаймного редактирования мегабайтных файлов с запасом хватало.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.