- •Входные языки сапр и
- •Предисловие
- •1. Языки формулировки задания
- •1.1. Функции. Программ перевода.
- •Общие требования к языкам формулировки задания.
- •1.1.2. Требования к языкам формулировки задания с точки зрения их использования.
- •1.2.Лексический и синтаксический анализ.
- •1.3.Проверка контекста и порождение сценария.
- •2.Теория формальных языков.
- •2.1. Порождающие грамматики
- •2.2. Иерархия распознающих автоматов
- •3. Синтаксис языков программирования.
- •3.1. Основные характеристики языков.
- •3.2. Нормальные формы Бекуса
- •3.3. Определение и общие свойства порождающих грамматик
- •3.4. Контекстно-свободные грамматики
- •3.4.1. Определение дерева вывода.
- •3.4.2. Алгоритм получения скобочной записи синтаксического дерева вывода.
- •3.4.3. Операции над бинарными отношениями.
- •3.5. Автоматные грамматики.
- •3.6. Методы распознавания и анализа языков.
- •3.6.1. Машина Тьюринга как распознающее устройство.
- •3.6.2. Автоматы и преобразователи с магазинной памятью.
- •3.7. Построение анализаторов кс-языков по порождающим грамматикам.
- •3.7.1. Анализаторы предшествования.
- •3.7.2. Lr(k)-анализатор
- •3.7.3. Глобальный анализатор
- •3.8. Контекстные условия языков программирования
3.4.3. Операции над бинарными отношениями.
Определение: Бинарным отношением R, заданным на множестве V называется подмножество множества VV.
Если V () R, то говорят, что для данной пары выполняется бинарное отношение R, т. е.R
Пусть имеется два отношения R1 и R2. Объединением R1R2 называется бинарное отношение, полученное в результате теоретико-множественного объединения R1 и R2.
Произведением R1 R2 называется бинарное отношение со следующим свойством: R1R2в том и только том случае, если найдется такой элемент чтоR1иR2.
Транзитивным замыканием R называется бинарное отношение со следующим свойством: 0Rnв том и только том случае, если найдется такая последовательность элементов n, n что iRi+1,inR R.
Пусть Е – отношение равенства: Eв том и только том случае, если
Транзитивно-рефлексивным замыканием R* отношения R называется бинарное отношение, вычисленное по формуле R*=ER.
Бинарное отношение на конечном множестве можно задать квадратной матрицей порядка n, где n – число элементов множества. Пусть элементы множества V некоторым образом пронумерованы числами от 1 до n: V = { n }. Тогда отношение R на V задается матрицей ijij=1, если iRj, и ij=0, если для пары (i, j) отношение не выполнено.
Определим некоторые бинарные отношения на множествах нетерминальных символов КС-грамматик:
Пусть G = (VT, VA, I, S).
Пусть (А1, А2) – пара нетерминальных символов.
1. Будем считать, что для пары (А1, А2) в грамматике G выполняется отношение DN, если во множестве правил S содержится правило вывода А1А2. Если справедлива запись А1 DN А2, то говорят, что А2 – непосредственно выводим из символа А1 без расширения.
2. Будем считать, что для пары (А1, А2) в грамматике G выполняется отношение DW, если во множестве правил S содержится правило вывода А1А2, где ,(VTVA)* и хотя бы одна из них не пустая. Если справедлива запись А1DWА2, то говорят, что символ А2 непосредственно выводим из символа А1 с расширением.
Обозначим DNDW через D. Если справедлива запись А1DА2, то говорят, что символ А2 непосредственно выводим из А1.
Определение: 1) Нетерминальный символ КС-грамматики (контекстно-свободной) называется выводимым, если он является начальным символом или существует вывод из начального символа цепочки, содержащей вхождение данного символа.
2) Нетерминальный символ КС-грамматики называется производящим, если существует вывод из этого символа терминальной цепочки.
3) Нетерминальный символ КС-грамматики называется существенным, если он выводимый и производящий.
Лемма1: Существует эффективный алгоритм, выделяющий подмножество существенных символов из множества нетерминальных символов производящей КС-грамматики.
Определение: 1) КС – грамматика, все нетерминальные символы которой существенны, называется приведенной.
2) Нетерминальный символ КС-грамматики называется циклическим, если в этой КС-грамматике существует вывод из этого символа цепочки, содержащей вхождение этого символа. В противном случае символ – нециклический.
3) КС-грамматика называется циклической, если в ней есть хотя бы один циклический символ.
4) Вывод в КС-грамматике называется циклическим, если в его цепочках найдутся два таких вхождения некоторого нетерминального символа, которые будут являться предком и потомком друг друга.
Лемма2: Существует эффективный алгоритм выделения подмножества символов произвольной КС-грамматики.
Лемма3: Нециклическая КС-грамматика порождает конечный язык.
Определение: Циклический символ КС-грамматики эффективный, если в ней существует вывод из этого символа цепочки более одного элемента, содержащей данный символ, в противном случае – фиктивный.
Пример 12: Символ A в приведенной ниже грамматике - фиктивный
IAB Bb
A C CA
Aa
Лемма4: Существует эффективный алгоритм выделения эффективных циклических символов произвольной КС-грамматики.
Теорема 2: Для того чтобы приведенная КС-грамматика порождала бесконечный язык необходимо и достаточно, чтобы она была циклической и содержала хотя бы один эффективный циклический символ.
Теорема 3: По любой УКС-грамматике (укороченная контекстно-свободная) может быть построена почти эквивалентная ей КС-грамматика.
Упражнения
В таблице 1 представлено множество S правил грамматики определяющей язык записи числа. Определите для этой грамматики VТ, VA, I.
В таблице 1 представлено множество S правил грамматики определяющей язык записи числа. Определите для этой грамматики эффективный циклический символ и укажите правило доказывающее это.
В таблице 1 представлено множество S правил грамматики определяющей язык записи числа. Определите тип этой грамматики. Обоснуйте ответ.
В таблице 1 представлено множество S правил грамматики определяющей язык записи числа. Запишите бинарные отношения для пар (П,Ф) и (М,Б).
Постройте синтаксическое дерево вывода числа -12,5е-7
Напишите линейно-скобочную запись числа +32.7е-23
Определите грамматику, порождающую язык определения идентификатора. VТ={И,Б,Ц,’_’} где И - идентификатор, Б - буква, Ц - цифра, ’_’ - знак подчеркивания. Для определения идентификатора используйте правила языка Паскаль.