четверг, 18 июля 2013 г.

Локализация ISO/IEC 14977 : 1996(E) (Extended BNF)

Перевёл себе для работы Стандарт ISO/IEC 14977: 1996(E), описывающий Extended BNF

Возможно материал будет интересен и др. людям, поэтому выкладываю результат в сеть для свободного использования. Обозначенная google-группа, создана для корректировки текущей версии перевода, замечания/исправления приветствуются.

Обозначенный метаязык удобен для описания различного рода грамматик, например для:

  • языков программирования
  • парсеров
  • интерпретаторов
Например, в книге "Программирование. Практика использования C++" Беарне Стровструп показывает, как правильно писать грамматику и реализовывать её в коде на примере парсера математических выражений. Упомянутый парсер поддерживает использование следующих операторов: + - * / % ( ). Кроме того, в нём же реализована возможность создания и использования переменных, а так же функций. Причём предварительно автор книги показывает несколько попыток написания такого парсера, однако лишь вариант с использованием грамматики даёт правильное, надёжное решение.

Кроме того, синтаксис многих консольных команд в операционных системах (когда мы вызываем справку по этим командам) описывается, как правило, именно в виде EBNF, либо в виде синтаксиса, близком к нему:



Грамотно построенная грамматика позволяет написать правильный, компактный код, решающий подобного рода задачи. Поскольку тема синтаксического анализа интересна для меня - я выполнил перевод указанного выше стандарта.

Для того, чтобы хорошо разобраться в EBNF, потребуется почитать дополнительную информацию, разъясняющую такие моменты, которые не удалось понять в ходе чтения обозначенного стандарта (у меня была пара-тройка таких). Дополнительный материал по теме EBNF можно почитать по ссылкам, указанным здесь.

Комментариев нет: