Re[22]: Опциональные типы
От: WolfHound  
Дата: 11.03.17 12:26
Оценка: +1
Здравствуйте, vdimas, Вы писали:

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

WH>>Это тривиальная задача. Делается, вообще не приходя в сознание.
V>Ну вот вы делали генератор для ПЕГ более 2-х лет.
V>Я не считаю, что 2 года — это трививально.
Нет. Генерацию первой версии парсера из грамматики я сделал за пару часов.
Остальное время ушло на создание алгоритма восстановления.

V>Т.е. остальные 6 лет ты потратил на обыгрывание восстановления после ошибок?

V>По-моему, ты сам себя закопал только что.
Ну так ты покажи алгоритм лучше.
Ну хоть один.

WH>>Покажи хоть чей. Там же по твоим утверждениям всё просто.

V>Хоть чей ты можешь взглянуть и без меня.
Так я уже посмотрел. И ничего внятного не нашёл.
По тому тебя треплом и называю.

WH>>Значит кто-то должен был это сделать.

V>Ну вот Бизон делает GLR, смотрел?.
https://www.gnu.org/software/bison/manual/html_node/Error-Recovery.html
Это же просто звиздец.

You can define how to recover from a syntax error by writing rules to recognize the special token error. This is a terminal symbol that is always defined (you need not declare it) and reserved for error handling. The Bison parser generates an error token whenever a syntax error happens; if you have provided a rule to recognize this token in the current context, the parse can continue.

Это пользователь должен описывать правила восстановления руками. Ахринеть.
1)Это куча мутной работы.
2)Не работает если в грамматике появляются новые правила, которые пользователь не предусмотрел.

Note that discarded symbols are possible sources of memory leaks, see Freeing Discarded Symbols, for a means to reclaim this memory.

Если бы нитра текла меня бы тут на смех всем RSDN'ом подняли.

Ты больше не ссылайся на такое. Это же полнейший неадекват.

И это по твоим утверждениям лучший ГЛР парсер.

WH>>Сколько десятков часов ты уже потратил отвечая на мои сообщения?

V>По 3-5 мин на сообщение.
Такие простони? Не верю.

WH>>В нисходящих парсерах это всё тоже доступно без проблем. Только этого мягко говоря недостаточно.

V>Недостаточен всего один следующий символ, ты хотел сказать.
V>Желательно закончить некое выражение, верно?
V>А для этого нужен текущий стек разбора, верно?
V>Причем, в рекурсивном спуске у нас стек разбора неявный, т.е. недоступный для его обхода/реинтерпретации, верно?
Неверно. Стек получить не трудно.
Но одного стека мало. Даже DAG'а стеков недостаточно.

V>Поэтому нужен какой-нить другой алгоритм, типа Эрли, который даст стек (стэки) разбора в виде, доступном для обхода.

Нет. Он нужен для того чтобы можно было проверять и оценивать множество вариантов восстановления.

V>Отчего же стандартом де-факто остаётся старенький Бизон?

Покажи как мне ИДЕ на бизоне.
На нитре (хотя она ещё недоделана) уже есть.

V>Тем не менее, это тоже был пример контекстно-зависимой грамматики.

Это был пример чуши.
Все языки, в которых есть требование объявления переменной до использования КЗ по определению.
Мы же говорим про парсеры которые из-за свой вынужденной убогости разбирают строгое надмножество языка.
После чего другой код отсекает те программы, которые языку не принадлежат.
Вот тут именно этот код и сработал.

V>У тебя на "using syntax XXX" происходит "кое-что".

Не кое-что, а загрузка грамматики из внешней ДЛЛ про которую автор языка даже не подозревает и добавление её в текущую грамматику.

V>Кароч, не заставляй коллег делать лишний раз "охотничью стойку", упоминая про КЗ. )))

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

V>Надеюсь, в твоём случае, в отличие от Влада, моей фразы "декомпозиция грамматик" будет достаточно для демонстрации понимания того, что при этом происходит?

Нет. Не будет.
Ибо понимания я не вижу.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.