- •Задание на курсовую работу
- •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-анализатора для подграмматики переменных
- •Разработка дмп-процессора
- •Взаимодействие дмп-процессоров
- •Алгоритм работы дмп-процессора
- •Передача атрибутов в дмп-процессоре
- •Тестирование дмп-процессора
Разобьем исходную грамматику на подграмматики:
Подграмматика для переменной:
Таблица нетерминалов:
Имя нетерминала |
Описание |
VAR |
Переменная |
LE |
Индексация к массиву |
SXP |
Последовательность выражений |
PAR |
Обращение к подэлементам |
EXP |
Выражение (ниже для выражения подграмматика) |
VARid LE PAR
LE[ EXP SXP ] LE
LE
SXP, EXP SXP
SXP
PAR . PT
PTnumerator
PTdenominator
PAR
Подграмматика для выражения:
Таблица нетерминалов:
Имя нетерминала |
Описание |
EXP |
Выражение |
AE |
Слагаемое |
ME |
Множитель |
SAE |
Последовательность слагаемых |
SME |
Последовательность множителей |
VAR |
Переменная |
EXPAE SAE
SAE+ AE SAE
SAE- AE SAE
SAE
AEME SME
SME* ME SME
SME/ ME SME
SMEcommon ME SME
SME
ME+ ME
ME- ME
MEfrac ME
MEint ME
MEsimplify ME
MEirregular ME
MEVAR
MEusi
ME( EXP )
Подграмматика для логического выражения:
Таблица нетерминалов:
Имя нетерминала |
Описание |
LEX |
Логическое выражеие |
EXP |
Выражение |
С |
Конъюнкция |
SC |
Последовательность конъюнкций |
REL |
Отношение |
LM |
Логический множитель |
SLM |
Последовательность логических множителей |
REO |
Операция отношения |
LEXC SC
SCor C SC
SC
LEXREL
CLM SLM
SLMand LM SLM
SLM
LM( LEX )
LMnot LM
RELEXP REO EXP
REO<
REO>
REO=
REO<=
REO>=
REO<>
Подграмматика для операторов:
Таблица нетерминалов:
Имя нетерминала |
Описание |
SO |
Раздел операторов |
COP |
Составной оператор |
OP |
Оператор |
ULO |
Непомеченный оператор |
EXP |
Выражение |
VAR |
Переменная |
LN |
Имя метки |
LPR |
Оператор цикла с параметром |
DIR |
Направление изменения переменной цикла |
IFO |
Условный оператор |
OPR |
Необязательная условного оператора |
EQO |
Оператор присваивания |
NOP |
Пустой оператор |
IOP |
Оператор ввода |
OOP |
Оператор вывода |
JMP |
Опереатор безусловного перехода |
SOP |
Последовательность операторов |
SVR |
Последовательность переменных |
SXP |
Последовательность выражений |
SOCOP .
COPbegin OP SOP end
SOP; OP SOP
SOP
OPLN : ULO
OPULO
ULOLPR
ULOEQO
ULONOP
ULOCOP
ULOJMP
ULOIFO
ULOIOP
ULOOOP
LPRfor id := EXP DIR EXP do OP
DIRto
DIRdownto
EQOVAR := EXP
NOP
JMPgoto LN
IFOif LEX then OP OPR
OPRelse OP
OPR
IOPread ( VAR SVR )
OOPwrite ( EXP SXP )
SVR, VAR SVR
SVR
SXP, EXP SXP
SXP
LNid
LNusi
Подграмматика для списка имён:
Таблца нетерминалов:
Имя нетерминала |
Описание |
NL |
Список имен |
SN |
Последовательность имен |
NLid SN
SN , id SN
SN
Подграмматика для типов:
Таблица нетерминалов:
Имя нетерминала |
Описание |
TN |
Имя типа |
INT |
Внутренний тип |
AT |
Тип-массив |
ET |
Перечислимый тип |
RT |
Ограниченный тип |
IT |
Индекс |
SIT |
Последовательность индексов |
NL |
Список имен |
TNINT
TNAT
TNET
TNRT
TNid
INTinteger
INTrational
ATarray [ IT SIT ] of TN
ITET
ITRT
ITid
SIT, IT SIT
SIT
ET( NL )
RTusi .. usi