09.17 Формулы Бэкуса-Наура, синтаксические диаграммы

FIXME: поменьше философии, а то не успеваем хвост практики.

Формальный язык
множество конечных слов (строк, цепочек) над конечным алфавитом.

Как его описать?

:)) Что понимается по «словом» в этом определении?

Алгоритмический язык
формальный язык, используемый для записи, реализации или изучения алгоритмов.
Язык программирования
знаковая система, предназначенная для записи компьютерных программ

Алгоритмический язык ≠ язык программирования:

<!> Ахтунг! Путаница в терминах! В описании ЯП часто используют термин «слово» (или «ключевое слово»), но это не вся программа. Это некоторая последовательность символов, имеющая самостоятельное значение — «знак» или «лексема».

Уровни рассмотрения ЯП (в скобках даны понятия из соответствующих разделов семиотики и лингвистики):

Семинар

Форма для сдачи

Метаязык

Формальный язык описания синтаксиса формального языка

  • Обычно не включает семантику и уж тем более прагматику

Формулы Бэкуса-Наура

Базовая:

  1. Терминал: знак из лексики языка

  2. Метапеременная (нетерминал): элемент, не принадлежащий лексике языка

  3. Склейка: несколько терминалов и нетерминалов

  4. Альтернатива: несколько элементов 1-3, разделённых «|»

  5. Определение: нетерминал ::= элемент 1-4

Если ∃ последовательность определений, такая что из стартового нетерминала можно получить данное слово, оно принадлежит языку.

:)) <!> В чём принципиальная разница между БНФ и НАМ?

Расширенная (РБНФ):

Особенности эмулятора

{OK} Разбор примера «целое число»:

number ::= ["-"] { digit }
digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

{OK} РБНФ -> БНФ: повторение — это рекурсия, необязательность — альтернатива

<!> В лекциях используется БНФ с итерацией, в УМК — БНФ с итерацией и необязательной частью, группировок в них нет.

Синтаксические диаграммы

Генератор, который может служить парсером.

Особенности построителя (более современная версия с разнообразным лишним)

Примеры:

Д/З

  1. Палиндромом называется цепочка, которая читается одинаково слева направо и справа налево. Например, цепочки a, aba, abba являются палиндромами. Пустая цепочка также является палиндромом. Постройте синтаксическую диаграмму для палиндрома в алфавите {a, b}. Напоминаем, что синтаксическая диаграмма может содержать рекурсию.

  2. Ожерелье Венеры состоит из начала и продолжения. Начало содержит ненулевое четное число топазов (Т). В продолжение входят рубины (Р) и сапфиры (С), продолжение не может быть пустым. В ожерелье может встречаться не более трех рубинов подряд. Постройте БНФ для ожерелья Венеры.
  3. Язон засевает борозду зубами дракона. Первым нужно посеять клык (К), затем непустую последовательность из резцов (Р) и моляров (М). В борозде должно быть четное число моляров. Постройте синтаксическую диаграмму для засеянной зубами борозды.
  4. «Произносимое слово» в алфавите {o,a,u,r,l,m} состоит из 1+2^n слогов, в каждом из которых 1-3 буквы, причём в слоге ровно одна гласная. Напишите БНФ для произносимого слова.
  5. Если из арифметического выражения удалить все символы, кроме скобок, получим скобочную систему. Пустая цепочка также является скобочной системой. Постройте БНФ для скобочных систем.
    • Примеры скобочных систем: ()(), ((())), ((())()).

    • Главное - сбалансированность!
  6. Глубиной скобочной системы называется максимальный уровень вложенности скобок. Например, система (()(())()()) имеет глубину 3, а система ()() глубину 1. Глубина пустой системы равна нулю. Постройте синтаксическую диаграмму для скобочных систем с глубиной не менее 2.

LecturesCMC/AL/Prac/05_BackusNaur (последним исправлял пользователь hbd 2026-09-18 17:43:27)