Re[19]: Опциональные типы
От: vdimas Россия  
Дата: 10.03.17 20:43
Оценка:
Здравствуйте, WolfHound, Вы писали:

V>>Про описание процедуры восстановления для восходящего парсинга ты мог почитать в интернете:

WH>Да чушь всё это. Низкокачественный наивняк.

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


V>>Я говорил и говорю, что суть LR-парсинга проста.

V>>В этом месте любому адекватному разработчику давно должно стать стыдно, если ему для объяснения простого алгоритма нужен некий исходник.
WH>Простые алгоритмы не работают.

1. А как же лексер работает?
2. Простые алгоритмы допиливаются.


WH>Я прошу не всю нитру, а только парсер.

WH>ГЛР парсеры же легко делаются.

Прост сам алгоритм разбора, но задача генерирования парсера из абстрактного описания не проста — такая же как и для других алгоритмов.


V>>В общем, опять демагогия на демагогии.

WH>Во-во. Вместо того чтобы показать ГЛР парсер который круто работает ты переводишь стрелки.

Я ни разу не обещал показать исходник, я лишь делился полученными результатами.

Чтобы я что-то тебе показал, меня надо мотивировать потратить на это значительное кол-во часов.
И с последним у тебя явные проблемы.


V>>Т.е., даже тебе, занятому именно в этой области 100% рабочего времени, требуется некоторое время, дополнительное к уже потраченному?

V>>Всё веселее и веселее, однако...
WH>Так это по тому что я делаю качественное восстановление.
WH>А какое попало восстановление действительно просто.
WH>Только толку от него нет от слова совсем.

Мде...
Если я тебе говорю, что таблица для восходящего разбора СОДЕРЖИТ необходимые данные для восстановления (и это действительно так, инфа проверяемая), а ты в ответ "а покажите-ка мне восстановление лучше, чем у меня, где я потратил на это годы" — то тебе сразу красная карточка за неумение вести обсуждение.

Тут не о чем спорить.
Например, в таблице перехода лексера по данному входному символу может не быть переходов из данного состояния. Зато по этой таблице можно посмотреть, по каким символам переходы от данного состояния, таки, есть и подсказать их.
Таблицы для LR-разбора по семантике фактически равны таблице лексера, в отличие от таблиц, скажем, для LL(1) разбора на ДКА.

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


V>>Потому что не то, что критиковать, а даже просто обсуждать ЛЮБОЕ твоё решение никто не имеет права.

WH>Обсуждение должно быть конструктивным. Тогда и я конструктивен.

Конструктив — это обмен технической информацией.
У тебя же сплошной стиль "а у вас зато молоко убежало". ))


WH>А когда есть только трёп, противоречащий всем научным работам, которые я видел


Ну так покажи мне исходники программ, упоминаемых в тех научных работах?
Потому что я тут тоже видел "научную" реализацию Эрли... Но как программист скажу — низачот.

Или брал я как-то один "научный" исходник по ИИ, так там и вовсе с пол-тыка в ~8 раз скорость поднял.


WH>да ещё и таким тоном как будто ты всё знаешь то имеем то что имеем.


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


WH>>>И это при том что я пока даже не требую, чтобы парсер поддерживал изменение грамматики во время разбора (это КЗ).

V>>Вот тот пример, что ты показывал с json: [...] — это не есть изменение грамматики во время разбора.
WH>Вот без этой строчки этого синтаксиса не будет.
WH>
WH>using syntax CSharpJson.Extention;//вот тут мы добавили синтаксис json
WH>

WH>Так что это если не изменение грамматики во время разбора?

А в C# вот тут:
unsafe {
    fixed(char * a = str) {...}
}

?

А какая грамматика получается после объединения контекстно-свободных грамматик?


V>>Некоторые генераторы парсеров умеют делать декомпозицию автоматом — разбивают все правила на группы с минимальной связанностью по нетерминалам, т.е. на "подграмматики". Таким образом общий объем таблиц переходов получается меньше. Получить 5-7 таблиц можно аж бегом на большой грамматике.

WH>Это мелкие детали реализации парсеров работающих на других принципах.
WH>В нитре не нужно, ибо таблиц нет.

Ну и как ты собрался сравнивать реализацию на goto/call и табличную?
Сравнивать надо на одинаковой технике реализации, чтобы сравнение было адекватным.
Так-то любую табличную реализацию можно перевести на goto/call и обратно, дело в трудоёмкости.
Но скорость до 2-х раз может отличаться сходу даже по идентичному алгоритму разбора, только лишь за счёт техники реализации.


V>>Ровно наоборот — производительность от этого обычно повышается.

WH>Опять голоса. Я говорю про добавление контекстно-зависимых возможностей в парсер.

Ты говоришь про semantic actions, которые влияют на сам парсер.
ОК.
Поинт понятен и отметается сходу тоже, бо такое можно практически при любой технике парсинга, т.е. делаем вид, что этого "аргумента" не было, не засоряем себе голову.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.