
- •Задание на курсовую работу
- •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} {typ} {con} {prm} {lbl} {usi} {var} {oth}
{P} ( ( ERR, ERR, ERR, ERR, ERR, PUSH, PUSH, PUSH, PUSH, ERR, PUSH, PUSH ),
{PN} ( PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH ),
{SD} ( PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH ),
{SDL} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, PUSH, ERR, ERR, ERR ),
{LN} ( ERR, ERR, ERR, ERR, PUSH, ERR, ERR, ERR, ERR, PUSH, ERR, ERR ),
{SLN} ( PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH ),
{SDC} ( ERR, ERR, ERR, ERR, ERR, ERR, PUSH, ERR, ERR, ERR, ERR, ERR ),
{CD} ( ERR, ERR, ERR, ERR, PUSH, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{SCD} ( PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH ),
{SDV} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, PUSH, ERR ),
{DOT} ( ERR, ERR, ERR, ERR, PUSH, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{SDO} ( PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH ),
{SDT} ( ERR, ERR, ERR, ERR, ERR, PUSH, ERR, ERR, ERR, ERR, ERR, ERR ),
{TD} ( ERR, ERR, ERR, ERR, PUSH, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{STD} ( PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH ),
{CNS} ( ERR, ERR, ERR, ERR, PUSH, ERR, ERR, ERR, ERR, PUSH, ERR, ERR ),
{SO} ( CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL ),
{NL} ( CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL ),
{TN} ( CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL ),
{,} ( POP, 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, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{=} ( ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{id} ( ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{type} ( ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR ),
{const} ( ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR ),
{program} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR ),
{label} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR ),
{usi} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR ),
{var} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR ),
{#} ( RET, RET, RET, RET, RET, RET, RET, RET, RET, RET, RET, RET ) );
Управляющая таблица ll1-анализатора для подграмматики типов
{int} {rat} {arr} {[} {]} {of} {,} {(} {)} {tn} {..} {usi} {othr}
{TN} ( ( PUSH, PUSH, PUSH, ERR, ERR, ERR, ERR, PUSH, ERR, PUSH, ERR, PUSH, ERR ),
{INT} ( PUSH, PUSH, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{AT} ( ERR, ERR, PUSH, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{ET} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, PUSH, ERR, ERR, ERR, ERR, ERR ),
{RT} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, PUSH, ERR ),
{SIT} ( PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH ),
{IT} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, PUSH, ERR, PUSH, ERR, PUSH, ERR ),
{integer} ( POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{rational} ( ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{array} ( ERR, ERR, POP, 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, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{of} ( ERR, ERR, ERR, ERR, ERR, POP, 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, POP, ERR, ERR, ERR, ERR, ERR ),
{)} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR ),
{tn} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR ),
{..} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR ),
{NL} ( CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL ),
{usi} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR ),
{#} ( RET, RET, RET, RET, RET, RET, RET, RET, RET, RET, RET, RET, RET ) );