
- •Задание на курсовую работу
- •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-анализатора для подграмматики переменных
- •Разработка дмп-процессора
- •Взаимодействие дмп-процессоров
- •Алгоритм работы дмп-процессора
- •Передача атрибутов в дмп-процессоре
- •Тестирование дмп-процессора
Управляющая таблица ll1-анализатора для подграмматики списка имён
{id} {,}{othr}
{NL} ( ( PUSH, ERR, ERR ),
{SN} ( PUSH, PUSH, PUSH),
{id} ( POP, ERR, ERR ),
{,} ( ERR, POP, ERR ),
{#} ( RET, RET, RET ) );
Управляющая таблица ll1-анализатора для подграмматики операторов
{beg} {end} {;} {.} {:} {for} {ln} {id} {to} {dwn} {do} {:=} {got} {rea} {wri} {,} {if} {els} {thn} {(} {)} {othr}
{SO} ( ( PUSH, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{COP} ( PUSH, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{OP} ( PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH ),
{ULO} ( PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH ),
{LPR} ( ERR, ERR, ERR, ERR, ERR, PUSH, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{DIR} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, PUSH, PUSH, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{IFO} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, PUSH, ERR, ERR, ERR, ERR, ERR ),
{OPR} ( PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH ),
{EQO} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, PUSH, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{NOP} ( PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH ),
{IOP} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, PUSH, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{OOP} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, PUSH, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{JMP} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, PUSH, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{SOP} ( PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH ),
{SVR} ( PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH ),
{SX} ( PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH ),
{begin} ( POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{end} ( ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{;} ( ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{.} ( ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{:} ( ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{for} ( ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{EXP} ( CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL ),
{VAR} ( CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL ),
{ln} ( ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{id} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{to} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{downto} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{do} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{:=} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{goto} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{read} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{write} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{,} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR ),
{if} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR ),
{else} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR ),
{then} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR ),
{(} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR ),
{)} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR ),
{LEX} ( CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL ),
{#} ( RET, RET, RET, RET, RET, RET, RET, RET, RET, RET, RET, RET, RET, RET, RET, RET, RET, RET, RET, RET, RET, RET ) );