- •Пояснительная записка к курсовой работе (вар16)
- •2008 Оглавление
- •Задание
- •Описание синтаксиса языка в форме Бэкуса-Наура Teрминальные символы:
- •Программа
- •Оператор ввода
- •Оператор вывода
- •Оператор безусловного перехода
- •Оператор условного перехода
- •Оператор Цикла
- •Арифметические выражения
- •Переменная
- •Оператор присваивания
- •Объявления переменных, констант и типов
- •Операции входного языка и их приоритет
- •Перечисление лексем
- •Синтаксический анализ и перевод во внутреннюю форму
- •Кс-грамматика входного языка
- •Основная грамматика
- •Подграмматика составного оператора
- •Подграмматика оператора
- •Подграмматика оператора_вывода
- •Подграмматика для операторов
- •Подграмматика объявлений
- •Подграмматика объявления констант
- •Подграмматика арифметических выражений
- •Подграмматика переменной
- •Описание промежуточного языка.
- •Спецификация тетрад
- •Описание перевода (постфиксная s – атрибутная транслирующая грамматика) каждой конструкции входного языка
- •Основная грамматика
- •Подграмматика для операторов
- •Подграмматика объявления констант
- •Связь между дмп-процессорами и подграмматиками
- •Пример перехода от основной грамматики к подграмматике составного оператора Управляющая таблица основной грамматики
- •Управляющая таблица подграмматики составного оператора
- •S– атрибутный дмп процессор
- •Пример атрибутного перевода для арифметических выражений
- •Управляющая таблица подграмматики оператора
- •Управляющая таблица подграмматики оператора вывода
- •Реализация компилятора
- •Генерация ассемблерного кода
Связь между дмп-процессорами и подграмматиками
Модифицируется таблица и алгоритм “перенос-свертка” для основной грамматики:
Для всех терминалов, обозначающих подграмматики, строится множество терминалов, которые являются первыми в выводе из подграмматики, т.е {X | < X, XVt, XПОДГРАММ}
Для этих терминалов (обозначающие нетерминал) расширяется операция “перенос”:
ПЕРЕНОС = (ПЕРЕХОД, NПРОЦЕССОРА)
В магазин заносится терминал (обозначающий подграмматику), номер текущего процессора, начальный символ магазина (входная гловка не сдвигается)
Осуществляется переключение на новый процессор.
Модифицируется алгоритм “перенос-свертка” для подграмматик:
Если процессор обнаруживает неизвестный терминал данной подграмматики или результат функции “перенос” - ошибка, то выполняется -такт.
Если функция от - “свертка” то выполняется операция свертки.
Если функция от - “допуск” то осуществляется переход в предыдущую подграмматику, по следующему алгоритму:
снимаются со стека: начальный символ грамматики, начальный символ магазина
снимается со стека номер предыдущего процессора и осуществляется переключение на него.
Если функция от - “ошибка”, то разматывается стек и происходит выход со статусом “ошибка”
Пример перехода от основной грамматики к подграмматике составного оператора Управляющая таблица основной грамматики
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 9 * 9 ) :
=========================================
I IPRG!GD !( !) !voi!mai!des!sop!EpsI
=========================================
IPRGI ! ! ! ! ! ! ! ! I
I---I---+---+---+---+---+---+---+---+---I
IGD I ! ! ! ! = ! ! = ! ! I
I---I---+---+---+---+---+---+---+---+---I
I( I ! ! ! = ! ! ! ! ! I
I---I---+---+---+---+---+---+---+---+---I
I) I ! ! ! ! ! ! ! = ! I
I---I---+---+---+---+---+---+---+---+---I
IvoiI ! ! ! ! ! = ! ! ! I
I---I---+---+---+---+---+---+---+---+---I
ImaiI ! ! = ! ! ! ! ! ! I
I---I---+---+---+---+---+---+---+---+---I
IdesI ! ! ! ! > ! ! > ! ! I
I---I---+---+---+---+---+---+---+---+---I
IsopI ! ! ! ! ! ! ! ! > I
I---I---+---+---+---+---+---+---+---+---I
I I ! < ! ! ! < ! ! < ! ! I
=========================================
ФУНКЦИИ ТИПА "ПЕРЕНОС-СВЕРТКА" :
---- функция "перенос" ( количество элементов : 10 * 7 ) :
====================================
I I( !) !voi!mai!des!sop!EpsI
====================================
IPRG IОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ I
I------I---+---+---+---+---+---+---I
IGD IОШ !ОШ !ПЕР!ОШ !ПЕР!ОШ !ОШ I
I------I---+---+---+---+---+---+---I
I( IОШ !ПЕР!ОШ !ОШ !ОШ !ОШ !ОШ I
I------I---+---+---+---+---+---+---I
I) IОШ !ОШ !ОШ !ОШ !ОШ !ПЕР!ОШ I
I------I---+---+---+---+---+---+---I
Ivoi IОШ !ОШ !ОШ !ПЕР!ОШ !ОШ !ОШ I
I------I---+---+---+---+---+---+---I
Imai IПЕР!ОШ !ОШ !ОШ !ОШ !ОШ !ОШ I
I------I---+---+---+---+---+---+---I
Ides IОШ !ОШ ! C !ОШ ! C !ОШ !ОШ I
I------I---+---+---+---+---+---+---I
Isop IОШ !ОШ !ОШ !ОШ !ОШ !ОШ ! C I
I------I---+---+---+---+---+---+---I
I IОШ !ОШ !ПЕР!ОШ !ПЕР!ОШ !ОШ I
I------I---+---+---+---+---+---+---I
I PRG IОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ДОПI
====================================
---- функция "свертка" ( количество элементов : 9 * 4 ) :
====================
I I1 !2 !3 !4 I
====================
IPRG IОШ!ОШ!ОШ!ОШI
I------I--+--+--+--I
IGD IОШ!ОШ!ОШ!ОШI
I------I--+--+--+--I
I( IОШ!ОШ!ОШ!ОШI
I------I--+--+--+--I
I) IОШ!ОШ!ОШ!ОШI
I------I--+--+--+--I
Ivoi IОШ!ОШ!ОШ!ОШI
I------I--+--+--+--I
Imai IОШ!ОШ!ОШ!ОШI
I------I--+--+--+--I
Ides IОШ!ОШ!ОШ!ОШI
I------I--+--+--+--I
Isop IОШ!ОШ!ОШ!ОШI
I------I--+--+--+--I
I I1 !2 !3 !4 I
====================
--- правила грамматики :
1) PRG -> voi mai ( ) sop
2) PRG -> GD voi mai ( ) sop
3) GD -> GD des
4) GD -> des