PEG + TDOP альфа
От: WolfHound  
Дата: 23.10.11 17:08
Оценка: 251 (7)
Наконец дошли руки до парсера.
https://github.com/rampelstinskin/ParserGenerator
В данный момент это все еще дремучая альфа, но она уже работает.
В продакшене пока использовать не стоит, ибо будут ломающие изменения.

Реализовано:
Разбор выражений с учетом приоритетов операторов.
Эвристика разрешения конфликтов "кто длиннее тот и прав". Отход от правил PEG но это необходимое условие для того чтобы расширение во время разбора не было мучительно больным. Да и вообще приоритетный выбор considered harmful.
Внутренняя реализация заточена под динамическое расширение.

Еще не сделано:
Динамическое расширение.
Относительные приоритеты и силы связывания. Сейчас приоритеты не задаются вообще. А сила связывания задается циферками.
Разрешение конфликта в случае если два правила съели одно и тоже количество текста (приоритеты нужны именно для этого). Сейчас молча будет выбрано одно из них. Какое зависит от фазы луны.
Куча оптимизаций. Я их уже придумал, но делать буду потом.

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