Здравствуйте, catbert, Вы писали:
C>Наверное я неправильно что-то делаю с операторами, но следующая, можно сказать, тривиальная грамматика на моем ноуте компилируется три минуты:
Исправил баг в алгоритме выявления левой рекурсии. До этого эта грамматика компилировалась на моем ноуте ~2 минут. После исправления ~9 секунд.
Алгоритм выявления левой рекурсии теперь практически времени не отъедает. Так что если текущая версия все равно является медленной, то оптимизировать уже надо основные алгоритмы PegGrammar.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: [PEG] простая грамматика долго компилируется.
Здравствуйте, catbert, Вы писали:
C>Наверное я неправильно что-то делаю с операторами, но следующая, можно сказать, тривиальная грамматика на моем ноуте компилируется три минуты:
3 — это фигня. C#овская грамматика на моем одноядерном ноуте минут надцать компилируется.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: [PEG] простая грамматика долго компилируется.
Здравствуйте, catbert, Вы писали:
C>Наверное я неправильно что-то делаю с операторами, но следующая, можно сказать, тривиальная грамматика на моем ноуте компилируется три минуты:
Тормозит поиск левой рекурсии именя Влада. Он сейчас с ним разбирается.
Пока можно закомментировать вот это строчку
GrammarTyper.Check(parsedGrammar);
в файле Macro.n проекта Nemerle.Peg.Macros
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[2]: [PEG] простая грамматика долго компилируется.
Здравствуйте, VladD2, Вы писали:
VD>Исправил баг в алгоритме выявления левой рекурсии. До этого эта грамматика компилировалась на моем ноуте ~2 минут. После исправления ~9 секунд.
Отличная новость! Сейчас попробую. Я почти уверен, что это поможет, потому что проблемы начались сразу же когда я убрал левую рекурсию из грамматики.
Re[3]: [PEG] простая грамматика долго компилируется.
Здравствуйте, catbert, Вы писали:
H>>3 — это фигня. C#овская грамматика на моем одноядерном ноуте минут надцать компилируется.
C>Какой тогда смысл использовать PEG-парсер для Немерле 2?
На моей машине (2.4 ГГц Core 2 Duo) компиляция проекта парсера C# занимает ~40 секунд (в Debug-режиме). Это с исправленным багом. Что не так уж и медленно, если учесть, что это полная грамматика языка (т.е. сопоставимо с полным набором макросов немерле).
Кроме того не надо забывать о том, что макросы компилируются по отдельности, а значит разработка одного макроса не будет приводить к сильным задержкам при компиляции. Скомпилированные же макросы работают весьма шустро.
Кроме того основное время при компиляции проектов с PegGrammar занимает сама компиляция сгенерированного кода. Так что, если мы ускорим саму компиляцию, то и компиляция макросов (а так же проектов с PegGrammar-ом) будет происходить быстрее.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: [PEG] простая грамматика долго компилируется.
Здравствуйте, VladD2, Вы писали:
VD>На моей машине (2.4 ГГц Core 2 Duo) компиляция проекта парсера C# занимает ~40 секунд (в Debug-режиме). Это с исправленным багом. Что не так уж и медленно, если учесть, что это полная грамматика языка (т.е. сопоставимо с полным набором макросов немерле).
В релизе даже быстрее — 20 секунд.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.