- •Пояснительная записка к курсовой работе (вар16)
- •2008 Оглавление
- •Задание
- •Описание синтаксиса языка в форме Бэкуса-Наура Teрминальные символы:
- •Программа
- •Оператор ввода
- •Оператор вывода
- •Оператор безусловного перехода
- •Оператор условного перехода
- •Оператор Цикла
- •Арифметические выражения
- •Переменная
- •Оператор присваивания
- •Объявления переменных, констант и типов
- •Операции входного языка и их приоритет
- •Перечисление лексем
- •Синтаксический анализ и перевод во внутреннюю форму
- •Кс-грамматика входного языка
- •Основная грамматика
- •Подграмматика составного оператора
- •Подграмматика оператора
- •Подграмматика оператора_вывода
- •Подграмматика для операторов
- •Подграмматика объявлений
- •Подграмматика объявления констант
- •Подграмматика арифметических выражений
- •Подграмматика переменной
- •Описание промежуточного языка.
- •Спецификация тетрад
- •Описание перевода (постфиксная s – атрибутная транслирующая грамматика) каждой конструкции входного языка
- •Основная грамматика
- •Подграмматика для операторов
- •Подграмматика объявления констант
- •Связь между дмп-процессорами и подграмматиками
- •Пример перехода от основной грамматики к подграмматике составного оператора Управляющая таблица основной грамматики
- •Управляющая таблица подграмматики составного оператора
- •S– атрибутный дмп процессор
- •Пример атрибутного перевода для арифметических выражений
- •Управляющая таблица подграмматики оператора
- •Управляющая таблица подграмматики оператора вывода
- •Реализация компилятора
- •Генерация ассемблерного кода
Управляющая таблица подграмматики составного оператора
МАТРИЦА ПРЕДШЕСТВОВАНИЯ :
---- ( количество элементов : 6 * 6 ) :
=============================
I ISOP!SET!{ !} !op !EpsI
=============================
ISOPI ! ! ! ! ! I
I---I---+---+---+---+---+---I
ISETI ! ! ! = ! = ! I
I---I---+---+---+---+---+---I
I{ I !=< ! ! = ! < ! I
I---I---+---+---+---+---+---I
I} I ! ! ! ! ! > I
I---I---+---+---+---+---+---I
Iop I ! ! ! > ! > ! I
I---I---+---+---+---+---+---I
I I ! ! < ! ! ! I
=============================
ФУНКЦИИ ТИПА "ПЕРЕНОС-СВЕРТКА" :
---- функция "перенос" ( количество элементов : 7 * 4 ) :
========================
I I{ !} !op !EpsI
========================
ISOP IОШ !ОШ !ОШ !ОШ I
I------I---+---+---+---I
ISET IОШ !ПЕР!ПЕР!ОШ I
I------I---+---+---+---I
I{ IОШ !ПЕР!ПЕР!ОШ I
I------I---+---+---+---I
I} IОШ !ОШ !ОШ ! C I
I------I---+---+---+---I
Iop IОШ ! C ! C !ОШ I
I------I---+---+---+---I
I IПЕР!ОШ !ОШ !ОШ I
I------I---+---+---+---I
I SOPIОШ !ОШ !ОШ !ДОПI
========================
---- функция "свертка" ( количество элементов : 6 * 4 ) :
====================
I I1 !2 !3 !4 I
====================
ISOP IОШ!ОШ!ОШ!ОШI
I------I--+--+--+--I
ISET IОШ!ОШ!ОШ!ОШI
I------I--+--+--+--I
I{ IОШ!ОШ!3 !4 I
I------I--+--+--+--I
I} IОШ!ОШ!ОШ!ОШI
I------I--+--+--+--I
Iop IОШ!ОШ!ОШ!ОШI
I------I--+--+--+--I
I I1 !2 !ОШ!ОШI
====================
--- правила грамматики :
1) SOP -> { SET }
2) SOP -> { }
3) SET -> SET op
4) SET -> op
Нетерминалы desиsopобозначены терминалами, это говорит о том, чтоDESиSOP– это некоторые подграмматики.
Приведем пример перехода от основной грамматики к подграмматике составного оператора
Пусть номер основной грамматики 1, а номер подграмматики составного оператора 2
Модифицируем функцию “перенос” для основной грамматики:
sop = { ‘{‘ }
f(sop, ‘)’) = (ПЕРЕХОД, 2)
ФУНКЦИИ ТИПА "ПЕРЕНОС-СВЕРТКА" :
---- функция "перенос" ( количество элементов : 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ОШ !ОШ !ОШ !ОШ !ОШ !П,2!ОШ 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
====================================
Выполним разбор цепочки: voi mai ( ) { op op }
Вх. цепочка Стек Номер процессора Функция:
voi mai ( ) { op op } 1 ПЕРЕНОС
mai ( ) { op op } voi 1 ПЕРЕНОС
( ) { op op } voi mai 1 ПЕРЕНОС
) { op op } voi mai ( 1 ПЕРЕНОС
{ op op } voi mai ( ) 1 -> 2 ПЕРЕХОД, 2
{ op op } voi mai ( ) sop 1 2 ПЕРЕНОС
op op } voi mai ( ) sop 1 { 2 ПЕРЕНОС
op } voi mai ( ) sop 1 { op 2 ПЕРЕНОС
op } voi mai ( ) sop 1 { SET 2 СВЕРТКА
} voi mai ( ) sop 1 { SET op 2 ПЕРЕНОС
} voi mai ( ) sop 1 { SET 2 СВЕРТКА
e voi mai ( ) sop 1 { SET } 2 СВЕРТКА
e voi mai ( ) sop 1 SOP 2 -> 1 ДОПУСК
e voi mai ( ) sop 1 СВЕРТКА
e PRG 1 ДОПУСК
