Coco/R — генератор лексических и синтаксических анализаторов

Ada Coco/R — порт распространенного генератора Coco/R для генерации кода на языке Ада. Coco/R был изначально написан на/для Oberon, а затем портирован на множество других языков: Modula-2, Pascal, Delphi, C/C++, Java, C, Icon/UnIcon, Ruby.

Coco/R воспринимает атрибутную LL(1) грамматику языка в РБНФ (EBNF) и строит для нее низходящий рекурсивный синтаксический и лексический анализатор. По функциональности Coco/R покрывает использование пары утилит flex/yacc. Можно отметить следующие приемущества Coco/R над аналогичными программами:

  • Использование атрибутных грамматик позволяет вычислять атрибуты по мере синтаксического разбора
  • Мощное описание лексического сканера позволяет легко определять вложенные комментарии, игнорировать регистр символов, оперировать множествами символов, обрабатывать директивы (pragma) языка не описывая их в синтаксисе
  • Использывание EBNF упрощает описание языка
  • Поддержка обработки ошибок позволяет указывать в синтаксисе точки синхронизации и «слабые» (часто пропускаемые) лексемы
  • Структура рекурсивного анализатора отражает структуру обрабатываемого языка, позволяя легко отлаживать грамматику (в сравнении с табличными анализаторами).

На конференции при симпозиуме МДОЗМФ-2005 был заслушан доклад «Программная реализация языковых средств поддержки вычислительных экспериментов». А. Е. Гавва, В. О. Мищенко в котором рассматривалась возможность использования Coco/R.

Текущая версия библиотеки находится здесь. Доступна документация на русском языке. Автор Ada Coco/R и документации — Александр Гавва.