Статья в Википедии точна. Если у вас есть доступ, обязательно прочитайте оригинальную статью Вирта на EBNF.
Другая вещь, которую нужно знать, это то, что EBNF был разработан, чтобы упростить легкое написание парсеров рекурсивного спуска для языков, в которых каждая синтаксическая конструкция имеет идентифицирующие ключевые слова в начале. Фигурные скобки переводятся в while
петли; квадратные скобки (необязательный материал) переводят в if
, а альтернативы переводят в операторы if-then-else
или case
. Если у вас есть возможность создать свой язык таким образом, вы можете быстро отключить парсер и , чтобы выдавать хорошие сообщения об ошибках.
Единственное место, где это становится немного утомительным, это когда у вас есть язык, в котором есть инфиксные операторы с множеством различных уровней приоритета. Для этого вам нужна статья Дэйва Хэнсона Компактный рекурсивно-спусковой анализ выражений . Возможно, у серии технических отчетов Princeton есть бесплатная версия, и вы всегда можете посмотреть код в C-коде Хансона .