Макропроцессоры общего назначения 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Макропроцессоры общего назначения



Наиболее часто макропроцессоры используются при программировании на языке ассемблера. Часто такие макропроцессоры встроены в ассемблер. Специализированные макропроцессоры были созданы также для некоторых языков программирования высокого уровня. (См., например,. Кериган и Плаугер [1976].) Эти специализированные макропроцессоры во многом аналогичны с точки зрения выполняемых функций и используемого подхода. Их различия связаны в основном с особенностями конкретного языка программирования. В этом разделе мы обсудим макропроцессоры общего назначения. Они не зависят ни от какого конкретного языка программирования и могут быть использованы с целым рядом различных языков. Преимущества такого общего подхода к построению макропроцессоров очевидны. Программист не должен изучать специализированные макросредства для каждого компилятора или языка ассемблера. В результате экономится много времени и средств при обучении. Стоимость разработки макропроцессора общего назначения несколько больше по сравнению со специализированными макропроцессорами. Однако эти затраты не будут повторяться для каждого языка. Результатом будет существенное сокращение общих затрат на разработку и сопровождение математического обеспечения. На протяжении ряда лет экономия на сопровождении может превысить первоначальные затраты на разработку математического обеспечения.

Несмотря на все эти преимущества, в настоящее время имеется сравнительно мало макропроцессоров общего назначения. Одна из причин подобного положения дел связана с огромным количеством деталей, которые необходимо иметь в виду при программировании на любом реальноиспользуемом языке. Эти многочисленные детали могут быть встроены внутрь специализированного макропроцессора. Макропроцессор же общего назначения должен предоставлять пользователю средства, позволяющие ему самому определить необходимый набор правил, которому должен следовать макропроцессор.

При работе с обычными языками программирования встречается несколько ситуаций, в которых обычная подстановка макропараметров не должна осуществляться. Например, комментарии, как правило, игнорируются макропроцессором (по крайней мере при обработке списка параметров). Каждый язык программирования имеет свои собственные средства для идентификации комментариев. Они могут идентифицироваться с помощью ключевых слов (как в Алголе) или жe с помощью специальных символов в начале и в конце комментария (как в Паскале). Некоторые языки, например Фортран, используют, специальный символ, означающий, что вся строка является комментарием. В большинстве языков ассемблера любые символы в строке, следующие за полем операнда, автоматически рассматриваются как комментарии. В некоторых языках используется специальный символ разделитель. Все символы, находящиеся после него в строке, рассматриваются как комментарии.

Другие различия между языками программирования связаны со средствами группирования отдельных элементов языка, выражений или предложений. Однако некоторые языки используют другие символы вместо круглых скобок (например, символы [и]). Некоторые языки используют для этих целей ключевые слова begin и end.

Более общая проблема состоит в структуре лексем языка программирования, например идентификаторов, констант, операторов, ключевых слов. Языки существенно различаются по ограничениям, которые они накладывают на длину идентификаторов и правила написания констант. В некоторых случаях правила построения подобных лексем различны в разных частях программы (например, в предложении FORMAT языка Фортран или в предложении DATA DIVISION в языке Кобол). В некоторых языках имеются операторы, записываемые несколькими символами, такие как ** в языке Фортран и:= в Паскале. Если макропроцессор будет воспринимать их как два независимых символа, а не как один оператор, могут встретиться определенные труднгсти. Даже формат записи предложений исходной программы во входном файле может привести к определенным трудностям. Макропроцессор должен учитывать, являются ли пробелы разделителями или должны полностью игнорироваться, способы записи одного предложения в нескольких строках, специальные соглашения по форматированию предложений, подобные принятым в языках Фортран и Кобол.

Другая проблема, которая может возникнуть при разработке макропроцессора общего назначения, связана с синтаксисом предложений макроопределение и макропроцессоров предложения макроинициализации весьма похожи на другие предложения базового языка программирования. (Например, инициализация макроса RDBUFF на рис. 4.1. имеет ту же форму, что и предложение на языке ассемблера УУМ.) Эта схожесть форм имеет целью облегчить написание и чтение программ. Этого трудно достичь для макропроцессора общего назначения, который предназначен для работы с языками программирования, имеющими различный формат предложений.

В разд. 4.4.3 мы кратко опишем макропроцессор общего назначения, в котором решены многие из перечисленных выше вопросов. Обсуждение макропроцессоров общего назначения и макропроцессоров для языков программирования высокого уровня содержится в работах Коул [1981], Браун [1974] и Кэмпбел-Келли [1973].

 



Поделиться:


Последнее изменение этой страницы: 2017-02-17; просмотров: 261; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.227.0.192 (0.005 с.)