Войти на сайт ( )
[Вход] [Регистрация]
Компьютеры » Программирование » Структура и реализация макроязыков [Gaist-Endruy]
[Обновить]
[ Ответить ]
[Добавить в закладки]
Страница: 1, 2, 3, 4 ... 12, 13, 14
Gaist-Endruy ( off )
( 09:29 24-03-2009 )
Такой процесс замены называется расширением макрокоманды. Заметим, что само макроопределение не появляется в расширении исходного текста. Определение сохраняется макропроцессором. Вхождение в исходную программу имени макрокоманды как мнемоники операции называется макровызовом.

Gaist-Endruy ( off )
( 09:29 24-03-2009 )
ОПЕРАТОРЫ МАКРОКОМАНД

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

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

Gaist-Endruy ( off )
( 09:30 24-03-2009 )
Рассмотрим следующую программу:

Gaist-Endruy ( off )
( 09:30 24-03-2009 )
Пример 2:

.
.
.
SetPrevPos;
MoveToMark(1);
CenterFixScreenPos;
.
.
.
SetPrevPos;
MoveToMark(2);
CenterFixScreenPos;
.
.
.

Gaist-Endruy ( off )
( 09:30 24-03-2009 )
В данном случае последовательности команд очень похожи, но не абсолютно идентичны. В первой последовательности используется операнд "1", а во втором - операнд "2". Можно считать, что они выполняют одну и ту же операцию с переменным параметром, или операндом. Такой параметр называют "операндом макрокоманды" или "формальным параметром", и он обычно объявляется в той же строке, где и имя макроса.

Gaist-Endruy ( off )
( 09:30 24-03-2009 )
В случае работы с языком макроассемблера, он обычно помечается символом &, что отличает его как символ макроязыка от символов ассемблера. В нашем случае, фирма Борланд не предусмотрела в своем макроязыке работы с макрооперандами, однако можно предположить, что если бы макроопределения в языке TEMC могли бы обрабатывать подобную ситуацию, то формат макроопределения мог бы выглядеть следующим образом:

Gaist-Endruy ( off )
( 09:30 24-03-2009 )
MACRO <macro name>(<paramlist>)
-----------------
-----------------
-----------------
END;

Gaist-Endruy ( off )
( 09:31 24-03-2009 )
где <paramlist> это перечисление через запятую всех операндов макроса.

Предыдущая программа в таком случае может быть переписана следующим образом:

MACRO MacGoto(labelno)
SetPrevPos;
MoveToMark(labelno);
CenterFixScreenPos;

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