Доброго времени суток.
Перевёл себе для работы Стандарт ISO/IEC 14977: 1996(E), описывающий Extended BNF.
Возможно материал будет интересен и др. людям, поэтому выкладываю результат в сеть для свободного использования. Обозначенная google-группа, создана для корректировки текущей версии перевода, замечания/исправления приветствуются.
С уважением, Андрей.
Обозначенный метаязык удобен для описания различного рода грамматик, например для:
— языков программирования
— парсеров
— интерпретаторов
Например, в книге «Программирование. Практика использования C++» Беарне Стровструп показывает, как правильно писать грамматику и реализовывать её в коде на примере парсера математических выражений. Упомянутый парсер поддерживает использование следующих операторов: + — * / % ( ). Кроме того, в нём же реализована возможность создания и использования переменных, а так же функций. Причём предварительно автор книги показывает несколько попыток написания такого парсера, однако лишь вариант с использованием грамматики даёт правильное, надёжное решение.
Грамотно построенная грамматика позволяет написать правильный, компактный код, решающий подобного рода задачи. Поскольку тема синтаксического анализа интересна для меня — я выполнил перевод указанного выше стандарта.
Перевёл себе для работы Стандарт ISO/IEC 14977: 1996(E), описывающий Extended BNF.
Возможно материал будет интересен и др. людям, поэтому выкладываю результат в сеть для свободного использования. Обозначенная google-группа, создана для корректировки текущей версии перевода, замечания/исправления приветствуются.
С уважением, Андрей.
Обозначенный метаязык удобен для описания различного рода грамматик, например для:
— языков программирования
— парсеров
— интерпретаторов
Например, в книге «Программирование. Практика использования C++» Беарне Стровструп показывает, как правильно писать грамматику и реализовывать её в коде на примере парсера математических выражений. Упомянутый парсер поддерживает использование следующих операторов: + — * / % ( ). Кроме того, в нём же реализована возможность создания и использования переменных, а так же функций. Причём предварительно автор книги показывает несколько попыток написания такого парсера, однако лишь вариант с использованием грамматики даёт правильное, надёжное решение.
Грамотно построенная грамматика позволяет написать правильный, компактный код, решающий подобного рода задачи. Поскольку тема синтаксического анализа интересна для меня — я выполнил перевод указанного выше стандарта.