Jump to content

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

Макропроцессор общего назначения или общего назначения препроцессор — это макропроцессор , который не привязан и не интегрирован с конкретным языком или частью программного обеспечения.

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

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

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

[ редактировать ]
Имя Год Описание
ГПМ 1960-е годы Одним из первых макропроцессоров был GPM ( Макрогенератор общего назначения ). [1] Он был разработан в Кембриджском университете, Великобритания, в середине 1960-х годов под руководством Кристофера Стрейчи .
ОД/Я 1960-е годы Одним из особенно важных макропроцессоров общего назначения был (и остается) ML/I ( Macro Language One ). Он был разработан в рамках докторского исследования аспирантом Кембриджа Питером Дж. Брауном. ML/I работает с потоком символов и не требует ни специального формата для ввода, ни каких-либо специальных символов- флагов для представления макросов.
ЭТАП2 1960-е годы Современником ML/I был STAGE2, [2] Уильяма Уэйта часть системы мобильного программирования . [3] Это тоже макропроцессор общего назначения, но он обрабатывает входные данные построчно, сопоставляя каждую строку с указанными шаблонами; он примечателен тем, что он не зависит от набора символов, требуя только того, чтобы цифры 0–9 были смежными и именно в этом порядке (условие, которое не удовлетворялось некоторыми 6-битными и BCD- кодами символов той эпохи).
М6 1960-е годы Ранний макропроцессор, разработанный в AT&T Bell Laboratories Дугласом Макилроем , Робертом Моррисом и Эндрю Холлом. На него повлияли GPM и TRAC . Реализовано на FORTRAN IV , [4] он был портирован на Unix версии 2 .
СНОБОЛ 1960-е годы SNOBOL — это язык обработки строк, который способен выполнять большую часть предварительной обработки, которую может выполнить макропроцессор.
XPOP XPOP ​​был еще одной попыткой Марка Халперна из IBM в 1960-х годах создать общий язык обработки макросов.
ТТМ 1968 TTM — это рекурсивный интерпретирующий язык, предназначенный в первую очередь для манипулирования строками, редактирования текста, определения и расширения макросов, а также для других приложений, обычно классифицируемых как системное программирование. Он был разработан в 1968 году Стивеном Кейном и Э. Кентом Гордоном в Калифорнийском технологическом институте . Оно происходит, в первую очередь, от GAP [5] и ГПМ. [1]
GMP 1970-е годы Другой попыткой стал GMP (General Macro Processor), разработанный в середине 1970-х годов М. Булем из отдела DLB/GC компании CII на основе идей Р. Дж. Чеванса. Первая версия, протестированная совместно с Университетом Бордо I, работала на системе SIRIS8/IRIS80. Он был портирован на системы mini6 и был основным компонентом, участвовавшим в создании системы для этого семейства компьютеров. Процессор GMP использовал грамматики C2-Хомского для определения синтаксиса макросов и использовал императивный язык для выполнения вычислений и перехода к расширению макросов.
М4 1977 m4 был разработан для Unix Брайаном Керниганом и Деннисом Ритчи .
ЕЛЕНА Программное обеспечение: Практика и опыт , Том. 14, стр. 519–531, июнь 1984 г.
эхо 1995 gema — это контекстный макропроцессор, основанный на сопоставлении с образцом, написанный Дэвидом Н. Греем. Он заменяет/расширяет концепцию регулярных выражений контекстами. Контексты примерно соответствуют именованным наборам шаблонов. Как следствие, макросы в геме очень похожи на описание EBNF . [6]
ГПЗ 1996 gpp — еще один макропроцессор общего назначения, написанный Дени Ору. Он похож на препроцессор C, но имеет более общую семантику и позволяет настраивать синтаксис (например, TeX , XHTML и Prolog ). можно определить скрипты, подобные [7]
М5 1999 m5 — макропроцессор общего назначения, написанный Уильямом А. Уордом-младшим. В отличие от многих макропроцессоров, m5 не интерпретирует входные данные напрямую. Вместо этого он использует двухпроходный подход, при котором первый проход преобразует входные данные в программу awk, а второй проход выполняет программу awk для получения окончательного результата.
пиэкспандер 2011 pyexpander — макропроцессор общего назначения, основанный на языке программирования Python . Помимо простой замены макросов, он позволяет оценивать произвольные выражения Python и выполнять код Python, завершая pyexpander Turing . [8]
Ассемблер текста 2014 Text Assembler — текстовый/макропроцессор общего назначения, основанный на языке программирования JavaScript . Помимо простой замены макросов, он позволяет оценивать произвольные выражения JavaScript и выполнять код JavaScript. Он также может загружать модели данных JSON для более сложных задач обработки текста на основе данных. [9]
ПП 2016 PP — это текстовый препроцессор, разработанный для Pandoc (и, в более общем смысле, для Markdown и reStructuredText). ПП реализует: Макросы, грамотное программирование, GraphViz , PlantUML и диаграммы ditaa, скрипты Bash, Cmd , PowerShell , Python и Haskell . [10]
минимак minimac — минималистичный макропроцессор общего назначения. Он работает как фильтр потока символов, рекурсивно расширяя макросы по мере их обнаружения. Это необычно для макропроцессора тем, что он использует явный стек аргументов, а пользовательские функции определяются путем конкатенации (аналогично языку Форт ). [11]
аа_макрос 2017 aa_macro — это язык обработки текста на основе символьных потоков с открытым исходным кодом, написанный на Python. Текст обрабатывается слева направо и изнутри наружу. Набор предварительно определенных встроенных функций обеспечивает фундаментальные механизмы обработки, которые можно использовать напрямую или как элементы пользовательских стилей. Язык является расширяемым пользователем, и доступен wtfm, веб-оболочка для подготовки документов с открытым исходным кодом для этого языка. [12] [13]

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б Стрейчи, Кристофер (октябрь 1965 г.). «Макрогенератор общего назначения» . Компьютерный журнал . 8 (3): 225–241. дои : 10.1093/comjnl/8.3.225 .
  2. ^ Уэйт, Уильям М. (июль 1970 г.). «Система мобильного программирования: ЭТАП2». Коммуникации АКМ . 13 (7). Нью-Йорк, штат Нью-Йорк, США: ACM: 415–421. дои : 10.1145/362686.362691 .
  3. ^ Бриттен, Чарльз Рэндил (26 июня 2020 г.). «Перевод кода 8080 в 8086 — перевод Microsoft кода 8080 в 8086 и другие 16-битные процессоры» . Архивировано из оригинала 23 июля 2021 г. Проверено 28 ноября 2021 г. Stage2 был создан профессором Уильямом Уэйтом в Университете Колорадо в конце шестидесятых годов как основной компонент его системы мобильного программирования MPS. Stage2 использует алгоритм сопоставления с образцом для сопоставления входных строк текста с набором шаблонов. Каждый шаблон является первой строкой макроса, и когда совпадение распознается, тело кода этого макроса обрабатывается для создания выходного текста, сообщений об ошибках или создания построенной строки, которая отправляется для дальнейшего сопоставления с шаблоном. Таким образом, процесс является полностью рекурсивным и весьма мощным по своим возможностям преобразования текста. Фактически, его можно использовать для реализации компилятора языка программирования.
  4. ^ Коул, Эй Джей (1981). Макропроцессоры (2-е, исправленное изд.). Архив Кубка. п. 254.
  5. ^ Фарбер, DJ, Система сборки 635 — GAP. Вычислительный центр Bell Telephone Laboratories (1964).
  6. ^ «Гема» . www.gema.sourceforge.net . Проверено 21 апреля 2017 г.
  7. ^ «ГПП» . logological.org/gpp . Проверено 21 апреля 2017 г.
  8. ^ «Добро пожаловать в документацию pyexpander! — документация pyexpander 1.7.0» . pyexpander.sourceforge.net . Проверено 21 апреля 2017 г.
  9. ^ «Акиви — Ассемблер текста» . www.akiwi.co.uk . Проверено 21 апреля 2017 г.
  10. ^ Делор, Кристоф. «PP — универсальный препроцессор (с учетом Pandoc)» . cdsoft.fr . Проверено 17 октября 2017 г.
  11. ^ «минимак» . Freshmeat.net . Проверено 21 апреля 2017 г.
  12. ^ "аа_макрос" . Проверено 24 ноября 2017 г.
  13. ^ "чёрт побери" . Проверено 24 ноября 2017 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: cd9ffbddcd00a87d4de9cd90f289d7a3__1638123540
URL1:https://arc.ask3.ru/arc/aa/cd/a3/cd9ffbddcd00a87d4de9cd90f289d7a3.html
Заголовок, (Title) документа по адресу, URL1:
General-purpose macro processor - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)