Coco/R по сравнению с ANTLR

Я оцениваю использование Coco/R по сравнению с ANTLR для использования в проекте C# как часть того, что является по существу scriptable функциональностью автоматического составления стандартных писем. Для парсинга (простых) сценариев мне будет нужен синтаксический анализатор.

Я сфокусировался на Coco/R и ANTLR, потому что и кажитесь довольно опытными и хорошо сохраняемыми и способными к генерации достойных синтаксических анализаторов C#.

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

У кого-либо есть какие-либо рекомендации сделать? Каковы профессионалы/недостатки или для парсинга маленького языка - или я изучаю неправильные вещи полностью? Как хорошо они интегрируются в типичную непрерывную установку интеграции? Каковы ловушки?

Похожие страницы: Ну, много вопросов, такой как 1, 2, 3, 4, 5.

6
задан Community 23 May 2017 в 12:13
поделиться

3 ответа

Если вы просто объединяете данные в сложный шаблон, рассмотрите механизм StringTemplate Теренса Парра. Он человек, стоящий за ANTLR. StringTemplate может быть лучше подходящим и более простым в использовании, чем полный генератор синтаксического анализатора. Это очень многофункциональный шаблонизатор.

Порт C # доступен в загрузках .

2
ответ дан 9 December 2019 в 22:30
поделиться

По сути, coco / r генерирует парсеры рекурсивного спуска и поддерживает только грамматики LL (1), тогда как ANTLR использует обратное отслеживание (среди других методов), что позволяет для обработки более сложных грамматик. Парсеры coco / r намного легче и проще для понимания и развертывания, но иногда бывает сложно привести грамматику в форму, понятную coco / r с учетом ее единственного упреждающего ограничения - для многих распространенных грамматик языков программирования (например, C ++, SQL), это вообще невозможно.

2
ответ дан 9 December 2019 в 22:30
поделиться

ANTLR - это LL (*), который так же эффективен, как PEG, хотя обычно гораздо более эффективен и гибок. LL (*) вырождается в LL (k) при k> 1, в одном произвольном просмотре вперед нет необходимости.

3
ответ дан 9 December 2019 в 22:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: