Я оцениваю использование Coco/R по сравнению с ANTLR для использования в проекте C# как часть того, что является по существу scriptable функциональностью автоматического составления стандартных писем. Для парсинга (простых) сценариев мне будет нужен синтаксический анализатор.
Я сфокусировался на Coco/R и ANTLR, потому что и кажитесь довольно опытными и хорошо сохраняемыми и способными к генерации достойных синтаксических анализаторов C#.
Ни один, кажется, не тривиален для использования также, однако, и простота - что-то, что я ценил бы - особенно пригодность для обслуживания другими.
У кого-либо есть какие-либо рекомендации сделать? Каковы профессионалы/недостатки или для парсинга маленького языка - или я изучаю неправильные вещи полностью? Как хорошо они интегрируются в типичную непрерывную установку интеграции? Каковы ловушки?
Похожие страницы: Ну, много вопросов, такой как 1, 2, 3, 4, 5.
Если вы просто объединяете данные в сложный шаблон, рассмотрите механизм StringTemplate Теренса Парра. Он человек, стоящий за ANTLR. StringTemplate может быть лучше подходящим и более простым в использовании, чем полный генератор синтаксического анализатора. Это очень многофункциональный шаблонизатор.
Порт C # доступен в загрузках .
По сути, coco / r генерирует парсеры рекурсивного спуска и поддерживает только грамматики LL (1), тогда как ANTLR использует обратное отслеживание (среди других методов), что позволяет для обработки более сложных грамматик. Парсеры coco / r намного легче и проще для понимания и развертывания, но иногда бывает сложно привести грамматику в форму, понятную coco / r с учетом ее единственного упреждающего ограничения - для многих распространенных грамматик языков программирования (например, C ++, SQL), это вообще невозможно.
ANTLR - это LL (*), который так же эффективен, как PEG, хотя обычно гораздо более эффективен и гибок. LL (*) вырождается в LL (k) при k> 1, в одном произвольном просмотре вперед нет необходимости.