Re[2]: [Парсеры] Мысли о PEG и Packrat
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.09 20:11
Оценка:
Здравствуйте, z00n, Вы писали:

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


VD>>Теперь о проблемах...

Z>Вот тут изложены идеи полутора десятков оптимизаций для packrat:
Z>Better Extensibility through Modular Syntax
Z>реализация (на Java): http://www.cs.nyu.edu/~rgrimm/xtc/xtc-core.zip
Z>Полученные парсеры работают примерно со скоростью ANTLR 2.7 потребляя в 2 раза больше памяти.

Это "Rats!"? В нем оптимизации сделаны несколько не с того конца. В нем думаю что можно не мемоизировать, а не о том, что нужно мемоизировать. А это, на мой взгляд, не верный подход.
Работу по нему я читал.

Z>Rats! по умолчанию он мемоизирует все


И это в корне не верно, на мой взгляд.

Z>(при этом расход памяти оптимизациями сокращен в 5-10 раз). Результатом вполне можно пользоватся: на мегабайт исходника нужно примерно 300 мег памяти.


Мне кажется это многовато. К тому же это неминуемо замедлит парсинг.

Z> Потом (при необходимости) можно провести ручную дооптимизацию: пометить правила, которые не нужно мемоизировать. Это, в общем, работает.


Согласен. Но есть не мало работ демонструющих, что часто без мемоизации разультат получается лучше. Если грамматика близка к LL(1), то мемоизация всего подряд (даже с оптимизациями) может только навредить. Возможно, что обратный подход дал бы больше толку.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.