Где я могу получить материал для изучения EBNF?

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

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

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

13.12.2008 08:47:39
4 ОТВЕТА
РЕШЕНИЕ

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

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

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

5
18.12.2008 02:40:44
Сделайте поиск по «Компилятору конструкции Никлауса Вирта», там должна вернуться ссылка, по которой вы можете бесплатно скачать последнюю версию своей превосходной книги. Или зайдите
Andre Artus 21.06.2010 07:12:11

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

5
14.12.2008 20:41:32

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

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

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

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

0
13.12.2008 11:07:31

Вот парсер ebnf в php.

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

1
12.06.2010 05:01:20