BNFC - это инструмент построения компилятора BNF Converter, который берет аннотированную грамматику BNF (форма Бэкуса-Наура) и создает на ее основе синтаксический анализатор.

Проект BNF Converter - это инструмент, похожий на Yacc и ANTLR в том, что он принимает грамматическую спецификацию, написанную в нотации BNF, и генерирует компилятор, который распознает указанный язык.

На сайте Github говорится:

Конвертер BNF - это инструмент построения компилятора, генерирующий интерфейс компилятора из грамматики помеченного BNF. В настоящее время он может генерировать C, C++, C#, F#, Haskell, Java и OCaml, а также представления XML.

Учитывая грамматику Labeled BNF, инструмент производит:

  • реализация абстрактного синтаксиса
  • каркас случая для абстрактного синтаксиса на том же языке
  • файл генератора лексера Alex, JLex или Flex
  • файл генератора парсеров Happy, CUP или Bison
  • красивый принтер в виде модуля Haskell/Java/C++/C
  • латексный файл, содержащий читаемую спецификацию языка

Дополнительная информация: https://bnfc.digitalgrammars.com/.