
- •Задание на курсовую работу
- •1. Описание входного языка.
- •1.2.3. Конструкции входного языка.
- •Оператор итерационного цикла for-to-do и for-downto-do.
- •Оператор безусловного перехода goto.
- •Условный опеатор if-then-else
- •Лексический анализатор.
- •Представление основных операторов в полиз
- •Разобьем исходную грамматику на подграмматики:
- •Подграмматика для списка имён:
- •Подграмматика для типов:
- •Основная подграмматика:
- •Описание перевода (атг) каждой конструкции входного языка
- •Подграмматика для переменной:
- •Операционный символ { вычислить адрес }p, n, r
- •Операционный символ { числитель }p, t
- •Операционный символ {сложить}p, q, r
- •Операционный символ {вычесть}p, q, r
- •Операционный символ { умножить }p, q, r
- •Операционный символ { делить }p, q, r
- •Операционный символ { общий знаменатель }p, q, r
- •Операционный символ { дизъюнкция }p, q, r
- •Операционный символ { конъюнкция }p, q, r
- •Операционный символ { отрицание }p, q
- •Операционный символ { меньше }p, q, r
- •Операционный символ { отношение }q1, q2, q3, r
- •Подграмматика для операторов:
- •Операционный символ { id }n
- •Операционный символ { init }n, V, r
- •Операционный символ { нач_ц }q1, q2, q3, m1, m2, r2
- •Операционный символ { кон_ц } q4, q5, m1, m2
- •Операционный символ { присвоить }p, q
- •Операционный символ {индекс}p, r
- •Операционный символ {создать метку}p, r
- •Описание типа
- •Структуры данных дмп-процессора
- •Структура символа
- •Магазин дмп процессора
- •Управляющая таблица ll1-анализатора для подграмматики выражений
- •Управляющая таблица ll1-анализатора для подграмматики логических выражений
- •Управляющая таблица ll1-анализатора для подграмматики списка имён
- •Управляющая таблица ll1-анализатора для подграмматики операторов
- •Управляющая таблица ll1-анализатора для основной подграмматики
- •Управляющая таблица ll1-анализатора для подграмматики типов
- •Управляющая таблица ll1-анализатора для подграмматики переменных
- •Разработка дмп-процессора
- •Взаимодействие дмп-процессоров
- •Алгоритм работы дмп-процессора
- •Передача атрибутов в дмп-процессоре
- •Тестирование дмп-процессора
Операционный символ { id }n
Тип элемента |
n |
t1 |
Значение элемента |
n |
a1 |
if (t1 = перечислимый)
{ Записать на выход выражение ПОЛИЗ:
-
n
}
else {Ошибка}
Операционный символ { init }n, V, r
Тип элемента |
n |
t1 |
Значение элемента |
n |
a1 |
Тип элемента |
v |
t2 |
Значение элемента |
v |
a2 |
Тип элемента |
r |
t3 |
Значение элемента |
r |
a3 |
if (t2 = перечислимый)
{ Записать на выход выражение ПОЛИЗ:
-
@SET
создать временную переменную R
t3 integer
-
R
}
else {Ошибка}
Операционный символ { нач_ц }q1, q2, q3, m1, m2, r2
Тип элемента |
q1 |
t1 |
Значение элемента |
q1 |
a1 |
Тип элемента |
q2 |
t2 |
Значение элемента |
q2 |
a2 |
Тип элемента |
q3 |
t3 |
Значение элемента |
q3 |
a3 |
Тип элемента |
m1 |
t5 |
Значение элемента |
m1 |
a5 |
Тип элемента |
m2 |
t6 |
Значение элемента |
m2 |
a6 |
Тип элемента |
r2 |
t4 |
Значение элемента |
r2 |
a4 |
if(t3 = перечислимый)
{Записать на выход выражение ПОЛИЗ:
-
@SET
m1
@DEFL
i
R
if (q3 = inc)
{ Записать на выход выражение ПОЛИЗ:
-
@<=INT
}
else { Записать на выход выражение ПОЛИЗ:
-
@>=INT
}
Записать на выход выражение ПОЛИЗ:
m2 @JMPF
}
else {Ошибка}
Операционный символ { кон_ц } q4, q5, m1, m2
Тип элемента |
q4 |
t1 |
Значение элемента |
q4 |
a1 |
Тип элемента |
q5 |
t2 |
Значение элемента |
q5 |
a2 |
Тип элемента |
m1 |
t3 |
Значение элемента |
m1 |
a3 |
Тип элемента |
m2 |
t4 |
Значение элемента |
m2 |
a4 |
Записать на выход выражение ПОЛИЗ:
a1 |
if (q6 = inc)
{Записать на выход выражение ПОЛИЗ:
-
@INC
}
else { Записать на выход выражение ПОЛИЗ:
-
@DEC
}
Записать на выход выражение ПОЛИЗ:
m1 |
@JMP |
m2 |
@DEFL |
Операционный символ { присвоить }p, q
Тип элемента |
p |
t1 |
Значение элемента |
p |
a1 |
Тип элемента |
q |
t2 |
Значение элемента |
q |
a2 |
if (t1 = t2) {
Записать на выход выражение ПОЛИЗ:
@SET
} else {
if (t1 = rational) и (t2 = integer) {
@ITOR @SET
} else {
{Ошибка}
}
}
Операционный символ { переход }p
Записать на выход выражение ПОЛИЗ:
p |
@JMP |
Операционный символ { перейти по ”ложь” }m1, m2
Записать на выход выражение ПОЛИЗ:
m1 |
@JMPF |
Операционный символ { БП }m1, m2
Записать на выход выражение ПОЛИЗ:
m2 |
@JMP |
m1 |
@DEFL |
Операционный символ { метка2 }m
Записать на выход выражение ПОЛИЗ:
m |
@DEFL |
Операционный символ { ввести }p
Тип элемента |
p |
t1 |
Значение элемента |
p |
a1 |
Записать на выход выражение ПОЛИЗ:
@INPUT |
Операционный символ { вывести }p
Тип элемента |
p |
t1 |
Значение элемента |
p |
a1 |
Записать на выход выражение ПОЛИЗ:
@OUTPUT |
Подграмматика для списка имён:
Таблца нетерминалов:
Имя нетерминала |
Описание |
Тип атрибута |
NLp |
Список имен |
p - синтезированный |
SNt, p |
Последовательность имен |
t – унаследованный, p - синтезированнй |
NLp2idq1 { имя }q2, r1 SNr2, p1
r1 NewElem
q2 q1
r2 r1
p2 p1
SNp1, t2 , idq1 {последовательность имён }p2, q2, r1 SNr2, t1
r1 NewElem
p2 p1
q2 q1
r2 r1
t2 t1
SNp1, p2
p2 p1
Операционный символ { имя }q, r
Записать в переменную по адресу r элемент перечислимого типа по адресу q
Операционный символ { последовательность имён }p, q, r
Записать в переменную по адресу r элементы перечислимого типа, содержащиеся в p и q
Подграмматика для типов:
Таблица нетерминалов:
Имя нетерминала |
Описание |
Тип атрибута |
TNp |
Имя типа |
p - синтезированный |
INTp |
Внутренний тип |
p - синтезированный |
ATp |
Тип-массив |
p - синтезированный |
ETp |
Перечислимый тип |
p - синтезированный |
RTp |
Ограниченный тип |
p - синтезированный |
ITp |
Индекс |
p - синтезированный |
SITt, p |
Последовательность индексов |
t – унаследованный, p - синтезированный |
NLp |
Список имен |
p - синтезированный |
TNp2INTp1
p2 p1
TNp2ATp1
p2 p1
TNp2ETp1
p2 p1
TNp2RTp1
p2 p1
TNp2idp1
p2 p1
INTp2integerp1
p2 p1 (p1 = integer)
INTp2rationalp1
p2 p1 (p1 = rational)
ATr4array [ ITp1 {индекс}p2, r1 SITr2, t1 ] of TNq1 {массив}t2, q2, r3
r1 NewElem
r3 NewElem
p2 p1
r2 r1
t2 t1
q2 q1
r4 r3
ITp2ETp1
p2 p1
ITp2RTp1
p2 p1
ITp2idp1
p2 p1
SITp1, t2, ITq1 { последовательность индексов }p2, q2, r1 SITr2, t1
r1 NewElem
p2 p1
q2 q1
r2 r1
t2 t1
SITp1, p2
p2 p1
ETp2( NLp1 )
p2 p1
RTr2usip1 .. usiq1 {диапазон}p2, q2, r1
r1 NewElem
p2 p1
q2 q1
r2 r1