Interested Article - Макропроцессор
- 2021-10-07
- 2
Макропроце́ссор (также макрогенера́тор ) — программа , выполняющая преобразование входного текста в выходной при помощи задаваемых ей правил замены последовательностей символов, называемых правилами макроподстановки.
Наиболее простое и часто используемое правило макроподстановки сводится к замене определённой строки (называемой макро (макрос) или макрокоманда ) другой строкой, возможно, с использованием параметров. Также правила макроподстановки могут иметь более сложный характер, включая определение процедур и функций, вычислительные алгоритмы и пр.
Макропроцессор, как таковой, является частным случаем транслятора . В то же время, некоторые макропроцессоры являются частью более сложных трансляторов — ассемблеров и компиляторов языков программирования. Широко распространено использование макропроцессоров при трансляции с языков ассемблера , в таком случае соответствующий ассемблер называется макроассемблером . Простейший макропроцессор является частью компилятора языка программирования Си . В компилятор языка программирования ПЛ/1 входит значительно более сложный макропроцессор, фактически сам являющийся подмножеством ПЛ/1. Макропроцессор, являющийся частью компилятора, называется препроцессор .
Также существуют самостоятельные макропроцессоры, такие как, например, макропроцессор m4 .
К макропроцессорам может быть отнесено ядро системы компьютерной вёрстки Τ Ε Χ .
Граница между макропроцессорами, с одной стороны, и трансляторами языков программирования, ориентированных на символьную обработку, таких как REXX , Perl , Снобол , Рефал и пр., с другой — является достаточно условной. Обычно макропроцессорами называют такие трансляторы, входной язык которых малопригоден для написания универсальных программ, а ориентирован в основном на простые преобразования входного текста в выходной путём символьной подстановки.
Литература
- Браун П. Макропроцессоры и мобильность программного обеспечения. Серия: Математическое обеспечение ЭВМ. Пер. с англ. М.: Мир. 1977. 253 с.
- 2021-10-07
- 2