Войти на сайт ( )
[Вход] [Регистрация]
Компьютеры » Программирование » Структура и реализация макроязыков [Gaist-Endruy]
[Обновить]
[ Ответить ]
[Добавить в закладки]
Страница: 1, 2, 3 ... 10, 11, 12, 13, 14
Gaist-Endruy ( off )
( 09:43 24-03-2009 )
чтение идентификатора
запись имени и индекса в МНТ
МНТС ++
приготовить массив списка АЛА
запись имени в МДТ
МДТС ++
цикл {
чтение следующей строки ВХТ
подстановка индекса операторов
добавление в МДТ
МДТС ++
} пока !(операция MEND)
}
}
переход ко второму проходу
конец алгоритма

Gaist-Endruy ( off )
( 09:44 24-03-2009 )
Второй просмотр
Начало алгоритма

Gaist-Endruy ( off )
( 09:45 24-03-2009 )
ФЛАГ ВЫХОДА = 0
цикл пока (ФЛАГ ВЫХОДА == 0) {
чтение строки из ВЫХТ1
НАЙДЕНО = поиск кода в МНТ
если !(НАЙДЕНО) {
запись в ВЫХТ2 строки
если (операция END) {
ФЛАГ ВЫХОДА = 1
}
}
иначе {

Gaist-Endruy ( off )
( 09:45 24-03-2009 )
УКАЗАТЕЛЬ = индекс из МНТ
Заполнение списка параметров АЛ
цикл {
УКАЗАТЕЛЬ ++
чтение след. строки из МДТ
подстановка параметров
вывод в ВЫХТ2
} пока !(операция MEND)
}
}
переход к компиляции
конец алгоритма

Gaist-Endruy ( off )
( 09:45 24-03-2009 )
ОДНОПРОСМОТРОВЫЙ АЛГОРИТМ

Gaist-Endruy ( off )
( 09:45 24-03-2009 )
Предположим, что мы допускаем реализацию макроопределения внутри макроопределений. Основная проблема здесь заключена в том, что внутреннее макро определено только после того, как выполнен вызов внешнего. Для обеспечения использования внутреннего макро нам придется повторять как просмотр обработки макроопределений, так и просмотр обработки макрокоманд. Однако существует и еще одно решение, которое позволяет произвести распознавание и расширение в один просмотр.

Gaist-Endruy ( off )
( 09:46 24-03-2009 )
Рассмотрим аналогию с ассемблером. Макроопределение должно обрабатываться до обработки макрокоманд, поскольку макро должны быть определены для процессора раньше, чем макрокоманды обращения к ним.

Gaist-Endruy ( off )
( 09:46 24-03-2009 )
Однако, если мы наложим ограничение, что каждое макроопределение должно быть определено до того, как произойдет обращение к нему, мы устраним основное препятствие для однопросмотровой обработки. Заметим, что то же самое может быть верно и для символических имен в ассемблере, но такое требование было бы неоправданным ограничением для программиста.

Gaist-Endruy ( off )
( 09:46 24-03-2009 )
В случае же макрорасширения может быть вполне естественно потребовать, чтобы объявления макро предшествовали вызовам. Это не накладывает очень существенных ограничений на использование аппарата макрокоманд. Этот механизм даже не запрещает обращение макро к самому себе, поскольку обращение ведется в тот момент, когда имя макроса уже определено. Расширение же макроса идет не в процессе разбора макроса, а в процессе последующего вызова.

Gaist-Endruy ( off )
( 09:46 24-03-2009 )
Предложенный ниже алгоритм объединяет два вышеприведенных алгоритма для двупросмотрового макроассемблера в один.

Далее »
« Назад
Страница: 1, 2, 3 ... 10, 11, 12, 13, 14
[ Ответить ]
[Обновить]
[Добавить в закладки]
Компьютеры » Программирование » Структура и реализация макроязыков [Gaist-Endruy]
На главную
© s.sasisa.me