Univerzální makro procesor - General-purpose macro processor
Všeobecné účely makro procesor nebo obecný účel preprocessor je makro procesor, který není vázán na nebo integrované s určitým jazykem nebo kus softwaru.
Makroprocesor je program, který kopíruje proud textu z jednoho místa na druhé a vytváří při tom systematickou sadu náhrad. Makro procesory jsou často integrovány do jiných programů, jako jsou například assemblery a kompilátory. Někdy se jedná o samostatné programy, které lze použít ke zpracování jakéhokoli druhu textu.
Makro procesory byly použity pro jazykovou expanzi (definování nových jazykových konstrukcí, které lze vyjádřit pomocí stávajících jazykových komponent), pro systematické nahrazování textu, které vyžadují rozhodování, a pro přeformátování textu (např. Podmíněná extrakce materiálu ze souboru HTML ).
Příklady univerzálních makro procesorů
| název | Rok | Popis |
|---|---|---|
| GPM | 60. léta 20. století | Jedním z prvních makro procesorů byl GPM ( Univerzální makrogenerátor ). Toto bylo vyvinuto na univerzitě v Cambridgi ve Velké Británii v polovině šedesátých let pod vedenímChristophera Stracheye. |
| ML/I | 60. léta 20. století | Jedním zvláště důležitým obecným makroprocesorem byl (a stále je) ML/I ( Macro Language One ). Toto bylo vyvinuto jako součást doktorského výzkumu doktorem Cambridge Peterem J. Brownem. ML/I funguje na toku znaků a pro svůj vstup nevyžaduje žádný speciální formát, ani žádné speciální příznaky pro zavedení maker. |
| FÁZE 2 | 60. léta 20. století | Současníkem ML/I byl STAGE2, součást mobilního programovacího systému Williama Waiteho . Toto je také makro procesor pro obecné účely, ale zpracovává vstupní řádky najednou, přičemž každý řádek odpovídá specifikovaným vzorům; Je pozoruhodné, že je nezávislý na znakové sady, které vyžadují pouze to, že číslice 0-9 jsou souvislé a v tomto pořadí (podmínka není splněna některá z 6-bitových a BCD kódy znaků éry). |
| M6 | 60. léta 20. století | Raný makroprocesor vyvinutý v AT&T Bell Laboratories Douglasem McIlroyem , Robertem Morrisem a Andrewem Hallem. Byl ovlivněn GPM a TRAC . Implementovaný v systému FORTRAN IV , byl přenesen do verze 2 Unix . |
| SNOBOL | 60. léta 20. století | SNOBOL je jazyk pro zpracování řetězců, který je schopen provádět většinu předzpracování, které může provádět makroprocesor. |
| XPOP | XPOP byl další pokus o obecný jazyk pro zpracování makra Markem Halpernem v IBM v šedesátých letech minulého století. | |
| TTM | 1968 | TTM je rekurzivní, interpretační jazyk určený především pro manipulaci s řetězci, úpravy textu, definici a rozšiřování maker a další aplikace obecně klasifikované jako programování systémů. Byl vyvinut v roce 1968 Stevenem Caineem a E. Kentem Gordonem na California Institute of Technology . Je odvozen především z GAP a GPM. |
| SVP | 70. léta 20. století | Dalším pokusem byl GMP (General Macro Processor) vyvinutý v polovině 70. let M Boule v oddělení DLB/GC společnosti CII Company podle nápadů RJ Chevance. První verze, testovaná ve spolupráci s Univerzitou Bordeaux I, provozovala systém SIRIS8/IRIS80. Byl přenesen do systémů mini6 a byl hlavní součástí generování systému pro tuto rodinu počítačů. Procesor GMP používal k definování syntaxe maker gramatiky C2-Chomsky a k provádění výpočtů a přistoupení k rozšíření makra používal imperativní jazyk. |
| M4 | 1977 | m4 byl navržen pro Unix by Brian Kernighan a Dennis Ritchie . |
| ELENA | Software: Praxe a zkušenosti , sv. 14, s. 519–531, červen 1984 | |
| gema | 1995 | gema je kontextový makro procesor založený na párování vzorů, napsaný Davidem N. Grayem. Nahrazuje/vylepšuje koncept regulárních výrazů o kontexty. Kontexty zhruba odpovídají pojmenovaným sadám vzorů. V důsledku toho se makra v gema velmi podobají popisu EBNF . |
| GPP | 1996 | gpp je další obecný makro procesor napsaný Denisem Aurouxem. Podobá se preprocesoru C, ale má obecnější sémantiku a umožňuje přizpůsobenou syntaxi ( definovatelné jsou například skripty podobné TeX , XHTML a Prolog ). |
| M5 | 1999 | m5 je univerzální makro procesor napsaný Williamem A. Wardem, Jr. Na rozdíl od mnoha makroprocesorů m5 neinterpretuje přímo jeho vstup. Místo toho používá dvouprůchodový přístup, ve kterém první průchod převede vstup do awk programu a druhý průchod provede awk program k vytvoření konečného výstupu. |
| pyexpander | 2011 | pyexpander je univerzální makro procesor založený na programovacím jazyce Python . Kromě jednoduché náhrady makra umožňuje vyhodnocení libovolných výrazů Pythonu a spuštění kódu pythonu, čímž je pyexpander Turing dokončen . |
| Text Assembler | 2014 | Text Assembler je textový/makro procesor pro všeobecné použití založený na programovacím jazyce JavaScript . Kromě jednoduché náhrady makra umožňuje vyhodnocování libovolných výrazů JavaScriptu a spouštění kódu JavaScript. Může také načíst datové modely JSON pro složitější úlohy zpracování textu na základě dat. |
| PP | 2016 | PP je textový preprocesor určený pro Pandoc (a obecněji Markdown a reStructuredText). PP implementace: Makra, gramotné programování, GraphViz , PlantUML a ditaa diagramy, Bash, Cmd , PowerShell , Python a Haskell skripty. |
| minimac | minimac je minimalistický univerzální makro procesor. Funguje jako filtr proudu znaků a rekurzivně rozšiřuje makra, když na ně narazíte. Pro procesor makra je neobvyklé, že používá explicitní zásobník argumentů a uživatelské funkce jsou definovány zřetězením (podobně jako jazyk Forth ). | |
| aa_macro | 2017 | aa_macro je jazyk pro zpracování textu s otevřeným zdrojovým kódem na bázi znakového proudu napsaný v Pythonu. Text je zpracováván zleva doprava, zevnitř ven. Výběr předdefinovaných vestavěných funkcí poskytuje základní mechanismy zpracování, které lze použít přímo nebo jako prvky uživatelsky definovaných stylů. Jazyk je uživatelsky rozšiřitelný a je k dispozici wtfm, open-source webový obal pro přípravu dokumentů pro daný jazyk. |
Viz také
- Makro (počítačová věda) - V informatice výstižná reprezentace vzoru