Где взять материал для изучения EBNF? - PullRequest
9 голосов
/ 13 декабря 2008

расширенная форма Бэкуса-Наура: EBNF

Я очень плохо знаком с концепциями разбора. Где я могу получить достаточно легкий для чтения и изучения материал для написания грамматики для библиотеки boost :: spirit, в которой используется грамматика, аналогичная EBNF?

В настоящее время я смотрю на EBNF из Википедии.

Ответы [ 4 ]

5 голосов
/ 13 декабря 2008

Сам BNF прост, но вам нужно привыкнуть к тому, как думают авторы компиляторов. Их не обязательно легко читать, но ниже приводятся конспекты лекций Калифорнийского университета в Беркли и Стэнфорде.

4 голосов
/ 18 декабря 2008

Статья в Википедии точна. Если у вас есть доступ, обязательно прочитайте оригинальную статью Вирта на EBNF.

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

Единственное место, где это становится немного утомительным, это когда у вас есть язык, в котором есть инфиксные операторы с множеством различных уровней приоритета. Для этого вам нужна статья Дэйва Хэнсона Компактный рекурсивно-спусковой анализ выражений . Возможно, у серии технических отчетов Princeton есть бесплатная версия, и вы всегда можете посмотреть код в C-коде Хансона .

1 голос
/ 12 июня 2010

Здесь - это ebnf-парсер в php.

Также может помочь изучение того, как реализованы механизмы регулярных выражений. Попробуйте: re2 .

0 голосов
/ 13 декабря 2008

Ну, я думаю, что Википедия - самый простой способ по двум причинам:

  • В нем указаны наиболее важные пункты статьи
  • В нижней части страницы есть ссылки для дальнейшего чтения

Кроме того, я бы предложил прочитать стандарт BNF только для ознакомления с идеей, стоящей за ним.

По крайней мере, я тоже всегда начинаю с Википедии, и это почти всегда помогает.

...