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

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

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

Gaist-Endruy ( off )
( 09:39 24-03-2009 )
Таким образом, макропроцессор должен распознавать и обрабатывать макроопределения и макрокоманды.

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

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

Gaist-Endruy ( off )
( 09:39 24-03-2009 )
Например, если из один из параметров должен быть соединен с другим (macro[x,y] = xy), то возможен синтаксис x&y, что означает конкатенацию формального параметра x с формальным параметром y. Этот случай не вызывает больших трудностей. Гораздо сложней обрабатывается случай, когда речь идет о подстановке параметра внутри символьной строки.

Gaist-Endruy ( off )
( 09:39 24-03-2009 )
В таком случае возможным выходом будет конкатенация по умолчанию двух последовательно друг за другом идущих символьных строк, а также преобразование формального параметра, заключенного в скобки к символьной строке. Таким образом, если мы хотим, чтобы в макросе фигурировала строка вида "blablabla[x]xxxxx", где [x] должно заменяться формальным параметром вполне возможно заменить строку такого вида строкой типа "blablabla"(x)"xxxxx".

Gaist-Endruy ( off )
( 09:40 24-03-2009 )
Надо заметить, что множество замечательных идей по реализации подобных макроязыков реализовано в языке REXX, поддерживаемом на системном уровне операционной системой OS/2 компании IBM.

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

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