logo search
ЯП / ЯП / ЯП экзамен

Структура языка программирования. Синтаксис и семантика языка программирования. Расширенная форма Бэкуса-Наура.

Синтаксис – это набор правил, определяющих какие последовательности символов допустимы. Задается с помощью формальной нотации.

Синтаксическая категория представляет собой ту конструкцию ЯП, которая описывается. Описание задают формальные правила. Для описания правил используют следующие обозначения:

  1. прямой жирный текст – фактические символы

  2. курсив – синтаксические категории

  3. [A] – элемент А входит или не входит в описание синтаксиса

  4. {А} – 0 или более повторений элемента А

  5. (АВ) – группировка элементов

  6. | - или

Семантика языков программирования - это смысл синтаксических категорий ЯП, это интерпретация (смысловое значение) абстрактного синтаксиса (допустимых конструкций языка), выраженная в терминах той или иной математически строгой модели. Семантика связана с используемой концепцией программирования.

Расширенная форма Бекуса-Наура используется для описания контекста свободных и формлаьных грамматик и представляет собой некоторые правила продукции(?):

Левая часть – нетерминальный символ. Правая – терминальный или нетерминальный. Правая часть определяет метод конструкции членов синтаксических категорий в терминах других синтаксических категорий или\и терминальных символах.

Форма Бэкуса-Наура (БНФ) была впервые применена при описании Алгола-60. БНФ совпадает по сути с нотацией КС-грамматик, отличаясь лишь обозначениями. Предусмотрены следующие метасимволы:

Терминальные символы записываются как есть, никаких специальных способов их выделения не предусмотрено. Вот пример определений на БНФ, взятый из спецификации Алгола-60 — «Модифицированного сообщения»:

Как видим, для выражения повторений используется рекурсия, причем повсеместно — левая. БНФ использована Н. Виртом при описании языка Паскаль. Хотя в нотацию были добавлены метаскобки {и}, обозначающие повторение, применены они лишь в отдельных случаях, в то время как, например, грамматика выражений леворекурсивна.