Конспект лекций Рекомендовано Учебно-методи





НазваниеКонспект лекций Рекомендовано Учебно-методи
страница3/9
Дата публикации18.09.2013
Размер1.01 Mb.
ТипДокументы
100-bal.ru > Информатика > Документы
1   2   3   4   5   6   7   8   9

5) разработка компилятора с широкими возможностями по об-

наружению, локализации и диагностированию ошибок;

6) обеспечение надежности компилятора;

7) быстрая разработка компилятора;

8) требование пакетной обработки программ;

9) ориентация на диалоговое применение компилятора.
Как зачастую бывает, эти цели могут оказаться взаимно

противоречивыми.

Выбор приоритетных целей во многом определяет и выбор

языка реализации. Как уже указывалось, в качестве языка реали-

зации может выбираться и язык высокого уровня. В таком случае

можно создавать переносимые ( с машины на машину) компиляторы.
- 18 -

Прежде чем перейти к следующему материалу, уточним поня-

тия синтаксиса и семантики языка программирования.

Правила, описывающие структуру входящих в язык программи-

рования текстов программ, называются  2синтаксисом 0, а правила,

определяющие смысловую сторону этих текстов (то есть приписы-

вающие им определенные смысловые значения), -  2семантикой  0дан-

ного языка.

 22. ФОРМАЛЬНЫЕ МЕТОДЫ ОПИСАНИЯ ЯЗЫКОВ
Наиболее известны и хорошо описаны следующие формальные

методы описания языков: Нормальные Формы Бэкуса - Наура ( 2БНФ 0),

 2синтаксические диаграммы  0Вирта и  2порождающие грамматики 0. БНФ

были первой, получившей широкое распространение, формальной

системой обозначений для описания синтаксиса языков программи-

рования. Впервые БНФ были применены для описания синтаксиса

языка Алгол-60. Позже появились синтаксические диаграммы,

описывающие синтаксис в графическом виде (см. приложение 2).

Но в теоретических исследованиях удобнее пользоваться аппара-

том формальных грамматик, на нем мы и остановимся поподробнее.
 22.1. Определения и общие свойства порождающих грамматик
Упомянутые выше нормальные формы Бэкуса и синтаксические

диаграммы Вирта используются для представления синтаксиса и,

отчасти, семантики. Приведем пример описания понятия "иденти-

фикатор" с использованием формализма БНФ:
<идентификатор> ::= <буква> │ <буква> <буквы и цифры>
<буквы и цифры> ::= <буква> │ <цифра> │

<буква> <буквы и цифры> │

<цифра> <буквы и цифры>
<буква> ::= a │ b │ c │ d │ e │ f │ g │ h │ i │ j │ k │ l │ m

│ n │ o │ p │ q │ r │ s │ t │ u │ v │ w │ x │ y │ z
<цифра> ::= 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9
- 19 -

Приведенные в угловых скобках обозначения называются ме-

талингвистическими переменными или нетерминальными символами.

В этих обозначениях проявляется семантика конструкций языка

программирования.

Запись вида "::=" читается как "это есть". Вертикальная

черта задает перечисление альтернативных определений данного

понятия. Оставшиеся символы называются терминальными.

Позже стали использоваться так называемые расширенные БНФ

(РБНФ). Их отличие в том, что в правых частях правил было раз-

решено использовать квадратные и фигурные скобки, не являющи-

еся терминальными. Квадратные скобки обозначают необязательный

элемент, а фигурные задают возможное повторение нуль или более

раз. Приведенный выше пример на РБНФ выглядит так:
<идентификатор> ::= <буква> {<буква или цифра>}
<буква или цифра> ::= <буква> │ <цифра>

<буква> ::= a │ b │ c │ d │ e │ f │ g │ h │ i │ j │ k │ l │ m

│ n │ o │ p │ q │ r │ s │ t │ u │ v │ w │ x │ y │ z
<цифра> ::= 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9
В синтаксических диаграммах терминальные и нетерминальные

символы различаются внешним видом контура: терминальные эле-

менты размещаются в овалах или кружках, а нетерминальные - в

прямоугольниках. В данном тексте терминальные символы будут

записываться в синтаксических диаграммах без контура. Название

диаграммы соответствует определяемому нетерминальному символу.

Пути, ведущие от начала диаграммы к ее концу задают все син-

таксически корректные варианты. На рисунке 5 приведены диаг-

раммы понятий "идентификатор", "буква" и "цифра".

Нормальные формы Бэкуса, а вместе с ними и синтаксические

диаграммы Вирта, легко трансформируются в порождающие грамма-

тики. Для этого металингвистические переменные заменяются не-

терминальными символами грамматики, комбинация "::=" заменя-

ется стрелкой, терминальные символы остаются неизменными, а

каждой альтернативе соответствует свое правило грамматики.
- 20 -
 ш1

┌─────┐

┌<─┤буква├─┐

Идентификатор ┌─────┐ │ └─────┘ │

─────────────>│буква├──┼──────────┼───────────────>

└─────┘ │ ┌─────┐ │

└<─┤цифра├─┘

└─────┘

┌──── a ────┐ ┌──── 0 ────┐

│ │ │ │

├──── b ────┤ ├──── 1 ────┤

│ │ │ │

Буква │. . . . . .│ Цифра │. . . . . .│

─────────┤ ├────> ───────┤ ├────>

│ │ │ │

└──── z ────┘ └──── 9 ────┘

Рис. 5. Пример синтаксических диаграмм

 ш0
Дадим формальное определение грамматики [2].

 2Определение 0. Порождающей грамматикой G называется четверка

объектов: , где

Vt - конечное множество терминальных символов;

Vn - конечное множество нетерминальных символов, причем

множества Vt и Vn не пересекаются;

S - начальный символ грамматики, принадлежащий множеству

Vn;

P - множество правил вывода вида x -> y, где x и y цепоч-

ки терминальных и нетерминальных символов.

Здесь и в дальнейшем будем придерживаться следующих обоз-

начений: малые латинские буквы из начала алфавита будут обоз-

начать терминальные символы, малые латинские буквы из конца

алфавита будут обозначать цепочки как терминальных, так и не-

терминальных символов, большие латинские буквы будут обозна-

чать нетерминальные символы. При всех буквах допустимо указы-

вать индексы.
 2Определение 0. Говорят, что цепочка x1 непосредственно вы-

водима из цепочки x0 в грамматике G (записывается так:

x0->/G/->x1 ), если цепочки x0, x1 представимы в виде

x0=w1yw2, x1=w1zw2, и среди правил вывода есть правило y->z.

 2Определение 0. Если в грамматике G есть непосредственная

выводимость x[0]->x[1], x[1]->x[2], ..., x[n-1]->x[n], то го-

ворят, что цепочка x[n] выводима из x[0] в грамматике G (за-

писывается так: x[0]->/+G/->x[n]). Символ грамматики можно

опускать или писать его под знаком выводимости.
- 21 -

В частных случаях, x[0] может быть нетерминалом или тер-

минальной цепочкой, что позволяет определять выводимость из

нетерминала, выводимость терминальной цепочки.

 2Определение 0. Множество терминальных цепочек, выводимых в

грамматике G из начального символа, называется языком, порож-

даемым этой грамматикой, и обозначается L(G).

 2Пример.  0Рассмотрим следующую грамматику G:

1) Vt = { a, b, c, 0, 1, 2 },

2) Vn = { A, B, C, D },

3) начальный символ грамматики - A,

4) правила вывода S = { A -> BC; B -> a; B -> b; B -> c;

C -> B; C ->D; C -> CC; D -> 0; D -> 1; D -> 2 }.

В язык L(G), порождаемый данной грамматикой G, входят це-

почки, начинающиеся с одной из букв: a, b или c. Далее следуют

один или несколько буквенных (a, b, c), или цифровых (0, 1, 2)

символов. Покажем, как, например, выводится цепочка ab0с:

A -> BC -> aC -> aCC -> aCCC -> aBCC -> abCC -> abDC -> ab0C

-> ab0c. Перечислить все цепочки языка невозможно, так как их

количество бесконечно.

Одной из основных проблем, связанных с практическим при-

менением порождающих грамматик, является проблема распознава-

ния. Для конкретной грамматики алгоритмическая разрешимость

проблемы распознавания означает, что можно за конечное число

шагов проверить принадлежность произвольной терминальной це-

почки языку, порождаемому данной грамматикой. Очевидно, что

интерес представляют в первую очередь распознаваемые языки, но

существуют и нераспознаваемые языки.

Описанный выше язык L(G) является распознаваемым.

Действительно, рассмотрим произвольную цепочку символов над

терминальным алфавитом Vt. Пусть ее длина равна l. Если l<2,

то цепочка заведомо не принадлежит языку.

Пусть l>=2, тогда применим к начальному символу правило

вывода A -> BC. Далее применим (l-1) раз правило C -> CC. В

результате получим цепочку нетерминалов: BCC...C. Принадлеж-

ность цепочки языку определяется выводимостью каждого из ее

символов из соответствующего нетерминала. Последнее легко про-

верить полным перебором правил вывода.

 2Определение 0. Количество символов, составляющих цепочку,

называется длиной цепочки (обозначение: l(x) или │x│ ). Если
- 22 -

l(x)=0, то цепочка называется пустой. Будем обозначать пустую

цепочку символом -  7e 0.

 2Определение 0. Грамматика называется неукорачивающей, если

для любого правила вывода левая часть не длиннее правой.

 2Теорема 0. Пусть G - неукорачивающая грамматика, тогда L(G)

- легко распознаваемый язык, то есть число шагов алгоритма

распознавания есть функция длины цепочки [2].

 2Указание 0. Доказательство основывается на полном переборе

бесповторных выводов.

Неукорачивающие грамматики довольно громоздки и неудобны,

так как в них допускается замена терминальных цепочек, что

приводит к потере естественной интерпретации нетерминальных

символов как обозначений (имен) синтаксических конструкций.

 22.2. Классификация грамматик
Существует несколько вариантов классификации порождающих

грамматик. Ниже приводится вариант классификации по Хомскому

[11]. Грамматики перечисляются в следующем порядке: произволь-

ные грамматики, неукорачивающие грамматики, грамматики не-

посредственных составляющих, контекстно-свободные грамматики,

укорачивающие контекстно-свободные грамматики, автоматные

грамматики.
1)  2Произвольные грамматики 0 - по Хомскому -  2тип 0 0.
2)  2Неукорачивающие грамматики 0 -  2тип 1 0.
3)  2НС - грамматики 0 (вид правил: xAy -> xty, t<>  7e 0 ).

Класс НС-грамматик эквивалентен классу неукорачивающих

грамматик (следовательно, по Хомскому тоже  2тип 1 0). Другое наз-

вание НС-грамматик - контекстно зависимые грамматики.
4)  2КС - грамматики  0(вид правил: A -> x, x<>  7e 0) - по

Хомскому -  2тип 2 0. Класс КС-языков уже класса НС-языков.
5)  2УКС - грамматики  0(вид правил: A -> x, где x , возмож-

но, пустая цепочка). По любой УКС-грамматике можно построить
- 23 -

почти эквивалентную ей КС-грамматику (тот же язык за исключе-

нием, возможно, пустой цепочки).
6)  2А - грамматики. 0 Лево и правоавтоматные или иначе - ре-

гулярные грамматики (вид правил: A -> aB, A -> a). По Хомскому

-  2тип 3 0.
 2Упражнение. 0 L={xbx}. (В терминальной цепочке "x" терминал

"b" не присутствует.) Показать, что это НС-язык.

(Ответ: I->b; I->IA[i]a[i]; a[i]A[j]->A[j]a[i]; bA[i]->a[i]b)

 2Пример.  0Рассмотрим скобочный язык. Он состоит из беско-

нечного множества цепочек, представленных правильной скобочной

структурой. Порождающая его грамматика очень проста:

1) E -> ( )

2) E -> ( E )

3) E -> E E
Судя по грамматике, язык является контекстно свободным.

Однако, пример КС-грамматики не означает, что не существует

грамматики с более жесткими ограничениями (в данном случае -

регулярной).

Докажем, что скобочный язык действительно не является ре-

гулярным.

Предположим противное: пусть существует регулярная грам-

матика (например, левоавтоматная). Тогда, правила вывода имеют

вид: A -> a, A -> aB. В качестве терминальных символов будут

выступать левые и правые скобки.

Предположим в искомой грамматике имеется k нетерминальных

символов. Рассмотрим скобочную цепочку, состоящую из k левых

скобок, за которыми следуют k правых скобок. Это правильная

скобочная цепочка. Построим вывод этой цепочки в нашей гипоте-

тической грамматике.

На каждом шаге вывода порождается один терминальный сим-

вол, поэтому всего будет 2k шагов. При этом, на каждом шаге в

получаемой цепочке будет присутствовать ровно один нетерминал.

Рассмотрим первую половину этого вывода (порождение k левых

скобок). Очевидно, что среди использованных в этой части выво-

да нетерминалов найдутся хотя бы два совпадающих, то есть:

E => ... => x 2Z 0 => ... => y 2Z 0 => t
- 24 -

Здесь x и y некоторые терминальные цепочки, а t - результирую-

щая цепочка. Пусть выделенная часть вывода содержит m шагов,

тогда цепочка y получается из цепочки x приписыванием m левых

скобок.

Понятно, что мы в рамках нашей грамматики можем построить

другой вывод, отличающийся от исходного тем, что в первой его

части будет выброшена выделенная ранее часть. И, следователь-

но, нашему языку будет принадлежать цепочка из (k-m) левых

скобок и k правых скобок. А это запрещено. Полученное противо-

речие означает, что не может существовать регулярная граммати-

ка, порождающая скобочный язык.
 23. ВЫВОД ЦЕПОЧЕК
 23.1. Задача разбора
Мы рассмотрели задачу порождения цепочек языка. Однако,

для компилятора важно уметь распознавать цепочки и устанавли-

вать их структуру. Эта задача называется задачей разбора.

Структура цепочки может быть задана графически в виде дерева.

В программе часто применяют иной способ - линейно скобочная

запись.

 2Пример. 0 Пусть даны правила вывода порождающей грамматики

G с начальным символом E:
1) E -> E + T

2) E -> T

3) T -> T * F

4) T -> F

5) F -> ( E )

6) F -> a

7) F -> b
Здесь E - арифметическое выражение; T - терм; F - множи-

тель.

Рассмотрим цепочку (a+b)*a . Очевидно, что она принадле-

жит языку L(G). Попробуем построить вывод этой цепочки из на-

чального символа: E -> T -> T*F. На этом шаге возникает неоп-

ределенность: к какому нетерминалу применять следующее правило
- 25 -

вывода. Будем придерживаться принципа - правило вывода всякий

раз применяется к самому левому вхождению нетерминала. Тогда

последовательность вывода имеет вид:
E -> T -> T*F -> F*F -> (E)*F -> (E+T)*F -> (T+T)*F ->

-> (F+T)*F -> (a+T)*F -> (a+F)*F -> (a+b)*F -> (a+b)*a
Мы осуществили так называемый левосторонний вывод. Пе-

речиcлим номера правил: 2,3,4,5,1,2,4,6,4,7,6. Последователь-

ность порождающих правил левостороннего вывода называется ле-

восторонним или нисходящим (от начального символа к терминаль-

ной цепочке) разбором.

Обратите внимание: в нашем случае существует только один

левосторонний вывод; то есть, каждый раз после выбора самого

левого нетерминала существует единственное правило, ведущее к

результирующей терминальной цепочке.
1   2   3   4   5   6   7   8   9

Похожие:

Конспект лекций Рекомендовано Учебно-методи iconКонспект лекций Владимира Климентьева по истории философии, отредактированный...
Рекомендовано Министерством общего и профессионального образования Российской федерации в качестве учебника для студентов высших...
Конспект лекций Рекомендовано Учебно-методи iconКурс лекций 2-е издание, стереотипное Минск 2005 удк 008(076. 6)
Рекомендовано к изданию Комиссией по приемке и аттестации электронных версий учебных и учебно-методических материалов Академии управления...
Конспект лекций Рекомендовано Учебно-методи iconС. П. Филин Концепции современного естествознания: конспект лекций
Конспект лекций соответствует требованиям Государственного образовательного стандарта высшего профессионального образования РФ и...
Конспект лекций Рекомендовано Учебно-методи iconУчебно-методический комплекс Специальность: 080801. 65 (351400) Прикладная...
С 56 Современная информационная культура: Учебно-методи­ческий комплекс / авт сост. С. Б. Голубцов – спб.: Ивэсэп, 2010. – 42 с
Конспект лекций Рекомендовано Учебно-методи iconКонспект лекций раскрывает содержание и структуру учебной дисциплины...
Налоговое право : конспект лекций / сост доцент Р. В. Бобринев; Кузбасский институт экономики и права. – Кемерово, 2011 – 144 с
Конспект лекций Рекомендовано Учебно-методи iconТема Содержание
Нормативно-правовые доку­менты и учебно-методи­ческое обеспе­чение к началу учебного года
Конспект лекций Рекомендовано Учебно-методи iconКонспект лекций Анализ рынка Форекс
Учебно-тематический план дисциплины «Учет и операционная деятельность в банках» 7
Конспект лекций Рекомендовано Учебно-методи iconУчебно-методический комплекс по дисциплине «Философия права»
Учебно-методический комплекс включает учебную программу курса, учебно-тематический план, конспект лекций, планы проведения семинарских...
Конспект лекций Рекомендовано Учебно-методи iconИ. В. Кузьмин «29» августа 2013 года
...
Конспект лекций Рекомендовано Учебно-методи iconОрганизация производства курс лекций
Рекомендовано к печати методической комиссией экономического факультета ггау, протокол №1 от 22. 09. 2004 г
Конспект лекций Рекомендовано Учебно-методи iconКонспект лекций по философии Часть 1 Античная философия Новосибирск...
Савостьянов А. Н. Конспект лекций по философии / Новосиб гос ун-т. Новосибирск, 2007. Ч. Античная философия. 68 с
Конспект лекций Рекомендовано Учебно-методи iconИнформационный бюллетень новых поступлений книг за сентябрь 2011 года
Амангельдиева Ж. А. Финансы: учебно-методи-ческий комплекс. Астана: Казату, 2010. 146с. 1 Сбо., 2 н а., 2 ч з., 1 оф., 59 уч а
Конспект лекций Рекомендовано Учебно-методи iconКонспект лекций по курсу хозяйственного права тема Понятие хозяйственного права
Кафедра Истории, социологии и права Назаров Андрей Александрович конспект лекций по курсу хозяйственного права
Конспект лекций Рекомендовано Учебно-методи iconРабочая учебная программа по дисциплине конспект лекций по дисциплине
Дисциплина входит в федеральный компонент профессионального цикла дисциплин специальности и является обязательной для изучения. Данный...
Конспект лекций Рекомендовано Учебно-методи iconРабочая учебная программа по дисциплине конспект лекций по дисциплине
Дисциплина входит в цикл общих математических и естественнонаучных дисциплин специальности и является дисциплиной по выбору студента....
Конспект лекций Рекомендовано Учебно-методи iconКонспект лекций по высшей математике. В 2 частях. Часть М.: Айрис-пресс,...
Баранова Е. С., Васильева Н. В., Федотов В. Л. Практическое пособие по высшей математике. Типовые расчеты. Учебное пособие. — Спб:...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск