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

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

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

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


person yesraaj    schedule 13.12.2008    source источник


Ответы (4)


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

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

Единственное место, где это становится немного утомительным, — это когда у вас есть язык, в котором есть инфиксные операторы с разными уровнями приоритета. Для этого вам понадобится статья Дейва Хэнсона Compact Recursive-Descent Parsing of Expressions< /а>. Может быть, у серии технических отчетов Принстона есть бесплатная версия, и вы всегда можете посмотреть код на странице C Hanson. конец.

person Norman Ramsey    schedule 18.12.2008
comment
Поищите Compiler Construction Niklaus Wirth, он должен дать ссылку, где можно бесплатно скачать последнюю версию его замечательной книги. Или посетите его домашнюю страницу cs.inf.ethz.ch/~wirth. - person Andre Artus; 21.06.2010

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

person Eugene Yokota    schedule 13.12.2008

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

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

person Naveen    schedule 12.06.2010

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

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

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

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

person Malcolm    schedule 13.12.2008