- •0. Формулировка задания
- •1. Описание входного языка Формулы Бэкуса-Наура
- •2. Описание семантики входного языка Правила реализации конструкций языка
- •3. Описание этапа лексического анализа.
- •3. 1. Определение типов лексем.
- •3. 2. Определение синтаксиса лексем.
- •3. 3. Построение диаграммы лексического анализатора.
- •3. 4. Таблицы лексем.
- •3. 5. Тестирование лексического анализатора.
- •4. Описание этапа синтаксического анализа
- •4.1. Разбиение кс–грамматики входного языка на подграмматики
- •4.2. Описание промежуточного языка
- •4.3. Неформальное описание перевода
4.2. Описание промежуточного языка
Описание тетрад | ||||||||
Синтаксис |
Семантика |
|
|
| ||||
Коп |
Оп1 |
Оп2 |
Рез |
|
|
|
|
|
BRL |
L |
|
|
Безусловный переход на метку L |
| |||
BF |
L |
R |
|
Переход на метку L, если R = “Ложь” | ||||
DEFL |
L |
|
|
Определение метки L |
|
| ||
:= |
B |
|
A |
A := B | ||||
BLBEG |
|
|
|
Начало блока |
|
|
| |
BLEND |
|
|
|
Конец блока |
|
|
| |
+ |
A |
B |
R |
R := A + B |
| |||
– |
A |
B |
R |
R := A – B |
| |||
* |
A |
B |
R |
R := A * B |
| |||
/ |
A |
B |
R |
R := A / B |
| |||
– |
A |
|
R |
R := –A |
|
| ||
AND |
A |
B |
R |
R := A and B |
| |||
OR |
A |
B |
R |
R := A or B |
| |||
NOT |
A |
|
R |
R := not A |
| |||
> |
A |
B |
R |
R := A > B | ||||
< |
A |
B |
R |
R := A < B | ||||
>= |
A |
B |
R |
R := A >= B | ||||
<= |
A |
B |
R |
R := A <= B | ||||
= |
A |
B |
R |
R := A = B | ||||
<> |
A |
B |
R |
R := A <> B | ||||
ITOA |
I |
|
R |
Преобразование типа I целый вещественный | ||||
ITOC |
I |
|
R |
Преобразование типа I целый комплексный | ||||
ATOC |
A |
|
R |
Преобразование типа I вещественный комплексный | ||||
SUBS |
A |
i |
R |
Выборка элемента A[i] вектора A | ||||
LEN |
A |
|
R |
Определение длины вектора A | ||||
SUM |
A |
B |
R |
Сумма векторов A и B | ||||
DIF |
A |
B |
R |
Разность векторов A и B | ||||
MULS |
A |
B |
R |
Скалярное произведение векторов A и B | ||||
MULC |
A |
B |
R |
Умножение вектора A на константу B | ||||
ABS |
A |
|
R |
Модуль комплексного числа | ||||
RE |
A |
|
R |
Выборка вещественной части комплексного числа | ||||
IM |
A |
|
R |
Выборка мнимой части комплексного числа | ||||
WRT |
A |
|
|
Вывод значения А на экран |
|
| ||
RED |
|
|
A |
Запрос на ввод с клавиатуры значения переменной A | ||||
CRLF |
|
|
|
Возврат каретки и перевод строки | ||||
BR |
m |
|
|
Безусловный переход на тетраду m |
| |||
BZ/BP/ BM |
m |
E |
|
Переход на тетраду с номером m, если значение переменной Е равно/больше/меньше 0 | ||||
BE/BL/ BG |
m |
E1 |
E2 |
Переход на тетраду с номером m, если значение операнда Е1 равно/больше/меньше значению(-я) операнда Е2 |
4.3. Неформальное описание перевода
1. Перевод условного оператора IF (Полная форма)
Входная конструкция:
IF <Выражение> THEN <Оператор1> ELSE <Оператор>
Последовательность тетрад:
-
КОП
Оп1
Оп2
Рез
<Выражение> (R - результат)
BF
Lelse
R
<Оператор1>
BRL
Lend
DEFL
Lelse
<Оператор2>
DEFL
Lend
2. Перевод условного оператора IF (Сокращённая форма)
Входная конструкция:
IF <Выражение> THEN <Оператор>
Последовательность тетрад:
-
КОП
Оп1
Оп2
Рез
<Выражение> (R - результат)
BF
Lend
R
<Операторы>
DEFL
Lend
3. Перевод оператора цикла WHILE
Входная конструкция:
WHILE <Выражение> DO <Оператор>
Последовательность тетрад:
-
КОП
Оп1
Оп2
Рез
DEFL
Lbegin
<Выражение> (R - результат)
BF
Lend
R
<Операторы>
BRL
Lbegin
DEFL
Lend
4. Перевод оператора вывода WRITELN
Входная конструкция:
WRITELN(<Выражение1>, <Выражение2>, … ,<ВыражениеN>)
Последовательность тетрад:
-
КОП
Оп1
Оп2
Рез
<Выражение1> (R1 - результат)
<Выражение2> (R2 - результат)
…
<Выражение1> (RN - результат)
WRT
R1
WRT
R2
…
WRT
RN
CRLF
5. Перевод оператора вывода READLN
Входная конструкция:
READLN(A1, A2, … ,AN)
Последовательность тетрад:
-
КОП
Оп1
Оп2
Рез
RED
A1
RED
A2
…
RED
AN
CRLF
6. Перевод оператора безусловного перехода GOTO
Входная конструкция:
…
1: <Оператор>
…
GOTO 1
Последовательность тетрад:
-
КОП
Оп1
Оп2
Рез
…
DEFL
Label1
<Оператор>
…
BRL
Label1