- •Задание на курсовую работу
- •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-анализатора для подграмматики выражений
{+} {-} {*} {/} {com}{frac} {int} {smp} {id} {usi} {(} {)} {irr} {othr}
{EXP} ( ( PUSH, PUSH, ERR, ERR, ERR, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, ERR, PUSH, ERR ),
{AE} ( PUSH, PUSH, ERR, ERR, ERR, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, ERR, PUSH, ERR ),
{ME} ( PUSH, PUSH, ERR, ERR, ERR, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, ERR, PUSH, ERR ),
{SAE} ( PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH ),
{SME} ( PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH ),
{+} ( POP, 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, POP, 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 ),
{common} ( ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{frac} ( ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{int} ( ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{simplify} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR ),
{VAR} ( CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL ),
{usi} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, POP, 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, POP, ERR, ERR ),
{irregular} ( ERR, 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, RET ) );
Управляющая таблица ll1-анализатора для подграмматики логических выражений
{or} {(} {)} {not} {and} {<} {>} {=} {<=} {>=} {<>} {othr}
{LEX} ( ( ERR, PUSH, ERR, PUSH, ERR, ERR, ERR, ERR, ERR, ERR, ERR, PUSH ),
{C} ( ERR, PUSH, ERR, PUSH, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{SC} ( PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH ),
{REL} ( ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, PUSH ),
{LM} ( ERR, PUSH, ERR, PUSH, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{SLM} ( PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH ),
{RELE} ( ERR, ERR, ERR, ERR, ERR, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, ERR ),
{or} ( 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 ),
{not} ( ERR, ERR, ERR, POP, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR ),
{and} ( 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, 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, ERR, ERR, ERR, ERR, POP, ERR ),
{EXP} ( CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL ),
{#} ( RET, RET, RET, RET, RET, RET, RET, RET, RET, RET, RET, RET ) );