- •Пояснительная записка
- •1 Формальная постановка задачи
- •2 Описание входного языка
- •2.1. Синтаксис входного языка
- •2.2. Семантика входного языка
- •2.2.1.Встроенные типы данных входного языка
- •2.2.2.Операции входного языка и их приоритет
- •2.2.3.Конструкции входного языка
- •3 Описание этапа лексического анализа
- •3.1 Описание типов лексем
- •3.2 Функции лексического анализатора
- •3.3 Тестирование лексического анализатора
- •4 Описание этапа синтаксического анализа
- •4.1 Исходная порождающая кс-грамматика
- •4.2 Разбиение исходной грамматики на подграмматики
- •4.3. Разработка дмп-процессора, порожденного исходной грамматикой
- •4.3.1 Алгоритм разбора для ll(1)-грамматик
- •4.3.2 Взаимодействие дмп-процессоров
- •4.3.3 Алгоритм работы дмп-процессора
- •4.3.4 Управляющие таблицы дмп-процессоров
- •4.3. Описание перевода во внутренний язык
- •4.3.1 Формат тетрады
- •4.3.2 Формат тетрад для представления основных операторов
- •4.3.3 Представление основных операторов(описанных в разделе семантики) с помощью тетрад
- •4.4.4 Взаимодействие атг с имеющимися таблицами лексического анализатора
- •4.4.5 Разработка атрибутной транслирующей грамматики
- •4.4.6 Описание используемых операционных символов
- •4.4.7 Атрибутный перевод дляLl(1)-грамматик
- •4.4.8 Атрибутный дмп-процессор
- •4.4.9 Тестовый пример
- •Список литературы
- •Приложение 1 Тестирование дмп-процессора
Список литературы
Опалева Э.А., Самойленко В.П., Семенова О.Н. Формальные методы описания перевода: Учеб. пособие /СПбГЭТУ. СПб., 2000.
Опалева Э.А., Самойленко В.П., Семенова О.Н. Методы синтаксического анализа: Метод. указания к лабораторным работам/ СПбГЭТУ. СПб., 1995.
Опалева Э.А., Самойленко В.П. Формальные грамматики и распознающие автоматы: Учеб. пособие /ЛЭТИ. Л., 1991.
Опалева Э.А. Самойленко В.П. Языки программирования и методы трансляции: учебное пособие /bhv, 2005.-480с.
AxoА., Сети Р., Ульман Д. Компиляторы. Принципы, технологии, инструменты.: Пер. с англ.-М.: Издательский дом «Вильямс», 2003.-768с.
Приложение 1 Тестирование дмп-процессора
Пусть на вход тестируемого ДМП-процессора подаётся следующая входная цепочка:
Рассмотрим пошагово работу ДМП-процессора.
(жирным шрифтом выделено текущее положение читающей головки на входной ленте )
Содержимое магазина |
Текущее состояние входной ленты |
Текущее состояние выходной ленты |
P |
voidmain( ) { int a; … |
1 |
void main ( ) { DVAR }
|
voidmain( ) { int a; … |
1 |
main ( ) { DVAR }
|
main( ) { int a; … |
1 |
( ) { DVAR }
|
( ) { int a; … |
1 |
) { DVAR }
|
) { int a; … |
1 |
{ DVAR }
|
{ int a; … |
1 |
DVAR }
|
inta;… |
1 |
DECVAR ; DVAR }
|
inta;… |
1 2 |
DECVAR ┴ ; DVAR }
|
inta;… |
1 2 65 |
BASE VAR ┴ ; DVAR }
|
inta;… |
1 2 65 1 |
int VAR ┴ ; DVAR }
|
inta;… |
1 2 65 1 2 |
VAR ┴ ; DVAR }
|
a; … |
1 2 65 1 2 |
VAR ┴ ┴ ; DVAR }
|
a; … |
1 2 65 1 2 61 |
IDENT ┴ ┴ ; DVAR }
|
a; … |
1 2 65 1 2 61 1 |
LETTER SIDENT ┴ ┴ ; DVAR }
|
a; … |
1 2 65 1 2 61 1 18 |
a SIDENT ┴ ┴ ; DVAR }
|
a; … |
1 2 65 1 2 61 1 18 22 |
SIDENT ┴ ┴ ; DVAR }
|
; … |
1 2 65 1 2 61 1 18 22 |
┴ ┴ ; DVAR }
|
; … |
1 2 65 1 2 61 1 18 22 20 |
┴ ; DVAR }
|
; … |
1 2 65 1 2 61 1 18 22 20 71 |
; DVAR }
|
; … |
1 2 65 1 2 61 1 18 22 20 71 75 |
DVAR }
|
vector b[3];
|
1 2 65 1 2 61 1 18 22 20 71 75 |
DVEC }
|
vector b[3];
|
1 2 65 1 2 61 1 18 22 20 71 75 3 |
DEVEC DVEC }
|
vector b[3];
|
1 2 65 1 2 61 1 18 22 20 71 75 3 5 |
DEVEC ┴ DVEC }
|
vector b[3];
|
1 2 65 1 2 61 1 18 22 20 71 75 3 565 |
vector VAR [ DIM ] ; DEVEC ┴ DVEC }
|
vector b[3];
|
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 |
VAR [ DIM ] ; DEVEC ┴ DVEC }
|
b[3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 |
VAR ┴ [ DIM ] ; DEVEC ┴ DVEC }
|
b[3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 |
IDENT ┴ [ DIM ] ; DEVEC ┴ DVEC }
|
b[3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 |
LETTER SIDENT ┴ [ DIM ] ; DEVEC ┴ DVEC }
|
b[3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 |
B SIDENT ┴ [ DIM ] ; DEVEC ┴ DVEC }
|
b[3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 |
SIDENT ┴ [ DIM ] ; DEVEC ┴ DVEC }
|
[3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 |
┴ [ DIM ] ; DEVEC ┴ DVEC }
|
[3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 |
[ DIM ] ; DEVEC ┴ DVEC }
|
[3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 |
DIM ] ; DEVEC ┴ DVEC }
|
3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 |
NATNUMBER SDIM ] ; DEVEC ┴ DVEC }
|
3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 |
3 SDIM ] ; DEVEC ┴ DVEC }
|
3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 |
SDIM ] ; DEVEC ┴ DVEC }
|
]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 |
] ; DEVEC ┴ DVEC }
|
]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 |
; DEVEC ┴ DVEC }
|
; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 |
DEVEC ┴ DVEC }
|
vector c[3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 |
vector VAR [ DIM ] ; DEVEC ┴ DVEC }
|
vector c[3];
|
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 |
VAR [ DIM ] ; DEVEC ┴ DVEC }
|
c[3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 |
VAR ┴ [ DIM ] ; DEVEC ┴ DVEC }
|
c[3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 |
IDENT ┴ [ DIM ] ; DEVEC ┴ DVEC }
|
c[3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 |
LETTER SIDENT ┴ [ DIM ] ; DEVEC ┴ DVEC }
|
c[3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 |
c SIDENT ┴ [ DIM ] ; DEVEC ┴ DVEC }
|
c[3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 |
SIDENT ┴ [ DIM ] ; DEVEC ┴ DVEC }
|
[3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 |
┴ [ DIM ] ; DEVEC ┴ DVEC }
|
[3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 |
[ DIM ] ; DEVEC ┴ DVEC }
|
[3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 |
DIM ] ; DEVEC ┴ DVEC }
|
3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 |
NATNUMBER SDIM ] ; DEVEC ┴ DVEC }
|
3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 |
3 SDIM ] ; DEVEC ┴ DVEC }
|
3]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 |
SDIM ] ; DEVEC ┴ DVEC }
|
]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 |
] ; DEVEC ┴ DVEC }
|
]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 |
; DEVEC ┴ DVEC }
|
; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 |
DEVEC ┴ DVEC }
|
a=5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 |
DVEC }
|
a=5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 |
COP }
|
a=5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 |
COP ┴ }
|
a=5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 |
SOP ┴ }
|
a=5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 |
OP ; SOP ┴ }
|
a=5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 |
ULO ; SOP ┴ }
|
a=5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 |
EQO ; SOP ┴ }
|
a=5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 |
VAR EQRS ; SOP ┴ }
|
a=5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 |
VAR ┴ EQRS ; SOP ┴ }
|
a=5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 |
IDENT ┴ EQRS ; SOP ┴ }
|
a=5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 |
LETTER SIDENT ┴ EQRS ; SOP ┴ }
|
a=5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 |
a SIDENT ┴ EQRS ; SOP ┴ }
|
a=5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 |
SIDENT ┴ EQRS ; SOP ┴ }
|
=5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 |
SIDENT ┴ EQRS ; SOP ┴ }
|
=5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 |
EQRS ; SOP ┴ }
|
=5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 |
= EXP ; SOP ┴ }
|
=5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 |
EXP ; SOP ┴ }
|
5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 |
EXP ┴ ; SOP ┴ }
|
5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 |
EXPS SAE ┴ ; SOP ┴ }
|
5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 |
AE SAE ┴ ; SOP ┴ }
|
5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 |
ME SME SAE ┴ ; SOP ┴ }
|
5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 |
VAR SME SAE ┴ ; SOP ┴ }
|
5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 |
VAR ┴ SME SAE ┴ ; SOP ┴ }
|
5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 |
NUMBER ┴ SME SAE ┴ ; SOP ┴ }
|
5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 |
NATNUMBER ┴ SME SAE ┴ ; SOP ┴ }
|
5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 |
5 ┴ SME SAE ┴ ; SOP ┴ }
|
5; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 |
SME SAE ┴ ; SOP ┴ }
|
; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 |
SAE ┴ ; SOP ┴ }
|
; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 |
┴ ; SOP ┴ }
|
; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 |
; SOP ┴ }
|
; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 |
SOP ┴ }
|
c=[2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 |
OP ; SOP ┴ }
|
c=[2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 |
ULO ; SOP ┴ }
|
c=[2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 |
EQO ; SOP ┴ }
|
c=[2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 |
VAR EQRS ; SOP ┴ }
|
c=[2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 |
VAR ┴ EQRS ; SOP ┴ }
|
c=[2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 |
IDENT ┴ EQRS ; SOP ┴ }
|
c=[2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 |
LETTER SIDENT ┴ EQRS ; SOP ┴ }
|
c=[2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 |
C SIDENT ┴ EQRS ; SOP ┴ }
|
c=[2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 |
SIDENT ┴ EQRS ; SOP ┴ }
|
=[2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 |
EQRS ; SOP ┴ }
|
=[2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 |
= EXP ; SOP ┴ }
|
=[2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 |
EXP ; SOP ┴ }
|
[2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 |
EXP ┴ ; SOP ┴ }
|
[2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 |
VAR ┴ ; SOP ┴ }
|
[2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 |
VAR ┴ ┴ ; SOP ┴ }
|
[2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 61 |
[ ELEM SELEM ] ┴ ┴ ; SOP ┴ }
|
[2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 61 2 |
ELEM SELEM ] ┴ ┴ ; SOP ┴ }
|
2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 61 2 |
FLNUMBER SELEM ] ┴ ┴ ; SOP ┴ }
|
2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 61 2 8 |
NUMBER SNUM SELEM ] ┴ ┴ ; SOP ┴ }
|
2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 61 2 8 10 |
NATNUMBER SNUM SELEM ] ┴ ┴ ; SOP ┴ }
|
2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 61 2 8 10 49 |
2 SNUM SELEM ] ┴ ┴ ; SOP ┴ } P ┴ ; SOP ┴ }
|
2.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 61 2 8 10 49 |
SNUM SELEM ] ┴ ┴ ; SOP ┴ }
|
.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 61 2 8 10 49 |
. SNUM SELEM ] ┴ ┴ ; SOP ┴ }
|
.0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 61 2 8 10 49 12 |
SNUM SELEM ] ┴ ┴ ; SOP ┴ }
|
0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 61 2 8 10 49 12 |
NUMBER SNUM SELEM ] ┴ ┴ ; SOP ┴ }
|
0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 61 2 8 10 49 12 11 |
0 SNUM SELEM ] ┴ ┴ ; SOP ┴ }
|
0, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 61 2 8 10 49 12 11 48 |
SNUM SELEM ] ┴ ┴ ; SOP ┴ }
|
, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 61 2 8 10 49 12 11 48 |
SELEM ] ┴ ┴ ; SOP ┴ }
|
, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 61 2 8 10 49 12 11 48 13 |
, ELEM SELEM ] ┴ ┴ ; SOP ┴ }
|
, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 61 2 8 10 49 12 11 48 3 |
ELEM SELEM ] ┴ ┴ ; SOP ┴ }
|
, 3.0, 4.1]; |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 61 2 8 10 49 12 11 48 3 |
Аналогично обрабатываем остальные 2 компоненты вектора | ||
… | ||
SOP ┴ }
|
} |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 61 2 8 10 49 12 11 48 3 7 3 8 9 52 12 11 48 13 7 38 9 53 12 11 49 50 13 |
┴ }
|
} |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 61 2 8 10 49 12 11 48 3 7 3 8 9 52 12 11 48 13 7 38 9 53 12 11 49 50 13 4 71 |
} ┴
|
} |
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 61 2 8 10 49 12 11 48 3 7 3 8 9 52 12 11 48 13 7 38 9 53 12 11 49 50 13 4 71 |
|
|
1 2 65 1 2 61 1 18 22 20 71 75 3 565 3 61 1 19 23 21 75 7 14 9 3 61 1 18 24 21 71 7 14 9 3 75 6 54 1 2 22 6 7 61 1 18 22 20 71 15 62 1 7 9 14 61 59 15 54 71 12 4 72 2 22 6 7 61 1 18 24 20 61 15 62 15 61 2 8 10 49 12 11 48 3 7 3 8 9 52 12 11 48 13 7 38 9 53 12 11 49 50 13 4 71 7 |
1Рассмотрим на этом примере принцип работы такого атрибута, как код операции.
{
switch (p1) {
case ‘<’ :
<p2p3r Break;
case ‘<=’ :
<=p2p3r break;
...
// аналогично для оставшихся четырёх операций отношения
}
}
2Скорее всего, тетрадыAddVarиAddVecна самом деле сформированы и не будут, нам это понадобилось, чтобы проиллюстрировать работу соответствующих операционных символов, которые выставляют зависимости между таблицами лексического анализатора и записывают эти связи в таблицу синтаксического анализатора