|
Нужный уровень строгости, достигаемый формализмом метаязыка, необходим для его изучения. ⇐ ПредыдущаяСтр 3 из 3
(К сожалению, принятый во многих современных книгах по программированию уровень строгости изложения заимствован скорее из книг по кулинарии). Язык формул Бэкуса-Наура Каждый язык, в том числе и формальный, имеет свой понятийный аппарат (Слово, знак препинания, предложение, … - понятия (языковые конструкции), используемые для описания естественных языков).
Вместе с тем каждый язык использует и некоторый алфавит (буквы, знаки препинания, и т.д.) так, что текст в этом языке представляет собой последовательность элементов алфавита (лексем). В соответствии с этим мы будем пользоваться терминами Понятие языка и лексема. Заметим, что сами эти термины представляют новый (третий) уровень абстракции в описании языка. Определим теперь язык Бэкуса-Наура. Понятие языка - это (метаязыковое) имя определяемой языковой конструкции. Имя конструкции в определении языка играет роль символа, который называется метасимволом (нетерминальным символом).
Определяемый язык представлен в виде конечного набора метасимволов (метасловаря) языка.
Метасловарь представляет понятийный аппарат языка программирования.
С формальной точки зрения метасловарь удобно считать алфавитом нетерминальных символов (метаалфавитом)
Вместе с метаалфавитом ЯП определяется и лексический словарь ЯП – конечный набор лексем.
С формальной точки зрения лексический словарь также удобно считать алфавитом терминальных символов.
Лексема - это атомарный объект языка. Описание ЯП на языке формул Бэкуса – Наура (БНФ) – это набор < N, T, R, e > где N – алфавит нетерминальных символов T – алфавит терминальных символов R – конечный набор грамматических правил e – символ “программа” {начальный нетерминальный символ}
Каждое грамматическое правило имеет вид a à p,
где a - элемент алфавита Т, p – слово в объединенномалфавите N ÈT. Таким образом, R = { a1::= p1, a2::= p2,..., ak::= pk }
Символ ::=, отделяющий левую часть правила (определяемый символ) от правой части (определения) означает «есть по определению». Одно из правил в левой части должно содержать символ e. Обычно это правило в списке указывается первым: R = { e à p1, a2 à p2,..., ak à pk } Пример правила <программа>::= <заголовок>; <блок>. Грамматическое правило описывается формулой e à a; b. Где e - символ понятия “программа”, a - символ понятия “заголовок”, b - символ понятия “блок”, а “; ” и “. ” – лексемы. Правила используются в процессе синтаксического анализа программ на ЯП. Блок синтаксического анализа компилятора представляет собой набор процедур анализа отдельных понятий, рекурсивно вызывающих друг друга. Например, оператор While описывается правилом <Оператор>::= While <Логическое выражение> do <Оператор>
В язык БНФ добавляют дополнительные средства в виде двуместных операций “ * ”, “ | ”, и одноместных операций “ [ ] ”, “ { } ”. Их можно описать как сокращения исходных формул: a::= pb и b::= q è a::= p * q a::= p1 и a::= p2 è a::= p1 | p2 a::= p и a::= pq è a::= p[q] a::= pa и a::= l è a::= {p} Здесь l -символ, означающий «пустое слово».
Алгебра, которую мы фактически определили, называется алгеброй регулярных языков.
Синтаксические диаграммы Синтаксические диаграммы – наглядный способ изображения формул Бэкуса-Наура.
Понятие языка, определяемое диаграммой, указано в начале диаграммы
Синтаксическая диаграмма представляет собой схему, структура которой определяет синтаксически правильную языковую конструкцию. Лексемы заключаются в овалы Нетерминальные символы - в прямоугольники.
Направление движения вдоль диаграммы (обхода) указывают стрелки, соединяющие объекты. Описание языка программирования на языке синтаксических диаграмм представляет собой набор диаграмм, каждая из которых определяет одно из понятий языка.
В синтаксически правильной программе все ее объекты удовлетворяют соответствующим диаграммам.
Синтаксические диаграммы использовались автором языка Паскаль Н. Виртом при его описании. В заключение приведем определение блока как на языке Бэкуса-Наура, так и на языке синтаксических диаграмм. <Блок>::= [<Раздел меток>] [; <Раздел констант ] [; <Раздел типов>] [; <Раздел переменных>] [; <Раздел процедур и функций>] <Раздел операторов>
ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между... Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все... Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор... Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычислить, когда этот... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|