Knowledge (XXG)

Macro (computer science)

Source 📝

750:'s frame macros have their own command syntax but can also contain text in any language. Each frame is both a generic component in a hierarchy of nested subassemblies, and a procedure for integrating itself with its subassembly frames (a recursive process that resolves integration conflicts in favor of higher level subassemblies). The outputs are custom documents, typically compilable source modules. Frame technology can avoid the proliferation of similar but subtly different components, an issue that has plagued software development since the invention of macros and 1185:. Two of the earliest programming installations to develop "macro languages" for the IBM 705 computer were at Dow Chemical Corp. in Delaware and the Air Material Command, Ballistics Missile Logistics Office in California. A macro instruction written in the format of the target assembly language would be processed by a macro compiler, which was a pre-processor to the assembler, to generate one or more assembly language instructions to be processed next by the assembler program that would translate the assembly language instructions into 38: 668: 841:, function-like operators whose inputs were not the values computed by the arguments but rather the syntactic forms of the arguments, and whose output were values to be used in the computation. In other words, FEXPRs were implemented at the same level as EVAL, and provided a window into the meta-evaluation layer. This was generally found to be a difficult model to reason about effectively. 1231:. The macro library would need to be written for each target machine but not the overall assembly language program. Note that more powerful macro assemblers allowed use of conditional assembly constructs in macro instructions that could generate different code on different machines or different operating systems, reducing the need for multiple libraries. 781:). In particular, uniform syntax makes it easier to determine the invocations of macros. Lisp macros transform the program structure itself, with the full language available to express such transformations. While syntactic macros are often found in Lisp-like languages, they are also available in other languages such as 1238:
In modern operating systems such as Unix and its derivatives, operating system access is provided through subroutines, usually provided by dynamic libraries. High-level languages such as C offer comprehensive access to operating system functions, obviating the need for assembler language programs for
1065:
fashion, to produce a compiled and much more efficient version of itself. The advantage of this approach is that complex applications can be ported from one computer to a very different computer with very little effort (for each target machine architecture, just the writing of the rudimentary macro
862:
An anaphoric macro is a type of programming macro that deliberately captures some form supplied to the macro which may be referred to by an anaphor (an expression referring to another). Anaphoric macros first appeared in Paul Graham's On Lisp and their name is a reference to linguistic anaphora—the
1172:
was initiated for two main purposes: to reduce the amount of program coding that had to be written by generating several assembly language statements from one macro instruction and to enforce program writing standards, e.g. specifying input/output commands in standard ways. Macro instructions were
1151:
In older operating systems such as those used on IBM mainframes, full operating system functionality was only available to assembler language programs, not to high level language programs (unless assembly language subroutines were used, of course), as the standard macro instructions did not always
1234:
In the 1980s and early 1990s, desktop PCs were only running at a few MHz and assembly language routines were commonly used to speed up programs written in C, Fortran, Pascal and others. These languages, at the time, used different calling conventions. Macros could be used to interface routines
1060:
macros. Applications (notably compilers) written in these machine-independent macros can then be run without change on any computer equipped with the rudimentary macro compiler. The first application run in such a context is a more sophisticated and powerful macro compiler, written in the
1037:
are useful for large-scale programming, but the interaction of macros and these other constructs must be defined for their use together. Module and component-systems that can interact with macros have been proposed for Scheme and other languages with macros. For example, the
185:
mode of operation and applied to all keyboard input, no matter in which context it occurred. They have to some extent fallen into obsolescence following the advent of mouse-driven user interfaces and the availability of keyboard and mouse macros in applications, such as
1051:
Macros are normally used to map a short string (macro invocation) to a longer sequence of instructions. Another, less common, use of macros is to do the reverse: to map a sequence of instructions to a macro string. This was the approach taken by the
269:
from Office 97 through Office 2019 (although it was available in some components of Office prior to Office 97). However, its function has evolved from and replaced the macro languages that were originally included in some of these applications.
161:
allow short sequences of keystrokes and mouse actions to transform into other, usually more time-consuming, sequences of keystrokes and mouse actions. In this way, frequently used or repetitive sequences of keystrokes and mouse movements can be
1042:
language extends the notion of a macro system to a syntactic tower, where macros can be written in languages including macros, using hygiene to ensure that syntactic layers are distinct and allowing modules to export macros to other modules.
1222:
Macro Assemblers allowed assembly language programmers to implement their own macro-language and allowed limited portability of code between two machines running the same CPU but different operating systems, for example, early versions of
1086:
can be defined by a programmer for any set of native assembler program instructions, typically macros are associated with macro libraries delivered with the operating system allowing access to operating system functions such as
1235:
written in assembly language to the front end of applications written in almost any language. Again, the basic assembly language code remained the same, only the macro libraries needed to be written for each target language.
201:(MMORPGs) to perform repetitive, but lucrative tasks, thus accumulating resources. As this is done without human effort, it can skew the economy of the game. For this reason, use of macros is a violation of the 2308: 885:), a pattern-based system where the syntactic environments of the macro definition and the macro use are distinct, allowing macro definers and users not to worry about inadvertent variable capture (cf. 928:", so that the syntactic expansion time of one macro system is the ordinary runtime of another block of code, and showed how to apply interleaved expansion and parsing in a non-parenthesized language. 769:
Macro systems—such as the C preprocessor described earlier—that work at the level of lexical tokens cannot preserve the lexical structure reliably. Syntactic macro systems work instead at the level of
1113:—or a combination of code and constants, with the details of the expansion depending on the parameters of the macro instruction (such as a reference to a file and a data area for a READ instruction); 740:
as the macro language gives power much greater than that of text substitution macros, at the expense of a larger and slower compiler. Macros in PL/I, as well as in many assemblers, may have
1098:
operating system functions such as ATTACH, WAIT and POST for subtask creation and synchronization. Typically such macros expand into executable code, e.g., for the EXIT macroinstruction,
3055: 232:(short for "editing macros") follows this idea to a conclusion. In effect, most of the editor is made of macros. Emacs was originally devised as a set of macros in the editing language 995:
and hygienic macros, which enables a programmer to design their own control abstractions, such as looping and early exit constructs, without the need to build them into the language.
2214: 2278: 1399:
One of the important uses of programmer macros is to save time and clerical-type errors in writing sequence of instructions which are often repeated in the course of a program.
1070:, for which compilers are available on virtually all computers, has rendered such an approach superfluous. This was, however, one of the first instances (if not the first) of 2227: 646:, can be embedded in free-format text, or the source code of other languages. The mechanism by which the code fragments are recognised (for instance, being bracketed by 434:, on the other hand, are much more powerful, able to make decisions about what code to produce based on their arguments; thus, they can effectively be used to perform 251:), also has an implementation of keyboard macros. It can record into a register (macro) what a person types on the keyboard and it can be replayed or edited just like 2377: 198: 1022:
conjectures that these three categories make up the primary legitimate uses of macros in such a system. Others have proposed alternative uses of macros, such as
2312: 484:(HLASM) can't be implemented with a preprocessor; the code for assembling instructions and data is interspersed with the code for assembling macro invocations. 221:. They are created by carrying out the sequence once and letting the application record the actions. An underlying macro programming language, most commonly a 3048: 2207: 415:
where they use simple textual substitution, they have a number of severe disadvantages over other mechanisms for performing in-line expansion, such as
689: 2441: 3041: 2791: 2653: 747: 3148: 3138: 2797: 1196:. This was a combination of both where one program served both functions, that of a macro pre-processor and an assembler in the same package. 3196: 3153: 3143: 3133: 2200: 3110: 2982: 2730: 773:, and preserve the lexical structure of the original program. The most widely used implementations of syntactic macro systems are found in 736:
statements" at compilation time, and the output of this execution forms part of the code that is compiled. The ability to use a familiar
757:
Most assembly languages have less powerful procedural macro facilities, for example allowing a block of code to be repeated N times for
2450: 1001:
Next, macros make it possible to define data languages that are immediately compiled into code, which means that constructs such as
777:-like languages. These languages are especially suited for this style of macro due to their uniform, parenthesized syntax (known as 715: 333:. In the mid-to-late 1990s, this became one of the most common types of computer virus. However, during the late 1990s and to date, 931:
A number of languages other than Scheme either implement hygienic macros or implement partially hygienic systems. Examples include
2024: 3125: 2822: 2502: 2446: 1174: 126:
can be expanded from a "small" sequence of characters. Macros often allow positional or keyword parameters that dictate what the
2097: 2045: 3214: 3105: 2682: 2555: 2486: 2421: 2344: 2182: 1216: 1212: 447: 3185: 3100: 2860: 2623: 2253: 1819: 826: 741: 693: 546: 337:
has been patching and updating its programs. In addition, current anti-virus programs immediately counteract such attacks.
3115: 2638: 2628: 2406: 1139:. Unlike typical macros, sysgen stage 1 macros do not generate data or code to be loaded into storage, but rather use the 1039: 940: 921: 806: 786: 583: 431: 318: 277: 262: 252: 127: 1211:
assembler, creating what is known as Macro SAP. McIlroy's 1960 paper was seminal in the area of extending any (including
3224: 3022: 3002: 2932: 2875: 2837: 2827: 2787: 2712: 2648: 2618: 2545: 2534: 2431: 2411: 2386: 2349: 1312: 948: 944: 932: 818: 794: 790: 1056:, which used a rudimentary macro compiler (called SIMCMP) to map the specific instruction set of a given computer into 2977: 2740: 2707: 2602: 2578: 2540: 2520: 2416: 2325: 2303: 2288: 2004: 936: 802: 774: 531: 395: 350: 237: 182: 678: 142:
or other factors. The term derives from "macro instruction", and such expansions were originally used in generating
3174: 2924: 2910: 2817: 2777: 2702: 2608: 2588: 2455: 2334: 2268: 952: 810: 2067: 1011:
Macros can also be used to introduce new binding constructs. The most well-known example is the transformation of
697: 682: 3017: 2782: 2692: 2672: 2658: 1339: 1247: 1208: 1071: 1062: 522: 423: 233: 112: 1509: 349:
is a macro that is able to insert given objects into its expansion. This gives the macro some of the power of a
122:, making the programming task less tedious and less error-prone. Thus, they are called "macros" because a "big" 2997: 2957: 2832: 2570: 2401: 1067: 886: 481: 461: 435: 412: 357: 217:
Keyboard and mouse macros that are created using an application's built-in macro features are sometimes called
2068:"Computing Science Technical Report No. 99 – A History of Computing Research at Bell Laboratories (1937–1975)" 1756: 3007: 2987: 2928: 2915: 2895: 2722: 2459: 2363: 2321: 1987: 1882: 1255: 330: 313: 1899: 1802:
Kohlbecker, Eugene; Friedman, Daniel; Felleisen, Matthias; Duba, Bruce (1986). "Hygienic Macro Expansion".
1029:
The interaction of macros and other language features has been a productive area of research. For example,
2967: 2942: 2936: 2880: 2842: 2530: 2525: 2477: 2372: 2273: 2245: 2236: 1287: 1259: 1132: 1110: 516: 925: 480:, rather than the character level. However, the macro facilities of more sophisticated assemblers, e.g., 2869: 2865: 2807: 2759: 2329: 991:, it is possible to define the latter in terms of the former using macros. For example, Scheme has both 281: 88: 31: 1695: 3219: 3093: 3064: 3012: 2992: 2952: 2754: 2613: 2482: 2469: 2223: 1411: 1318: 1144: 770: 654:) is similar to a textual macro language, but they are much more powerful, fully featured languages. 177:, then SuperKey, KeyWorks, Prokey – were very popular, first as a means to automatically format 118:
Macros are used to make a sequence of computing instructions available to the programmer as a single
104: 96: 92: 49: 2947: 2885: 2697: 2677: 2663: 2395: 2263: 2258: 1034: 737: 593: 297: 123: 100: 2764: 2717: 2687: 2633: 2492: 2391: 2283: 2192: 1969: 1934: 1390: 1307: 1106: 1030: 1019: 983:) indistinguishable from those built into the language. For instance, in a Lisp dialect that has 980: 550: 222: 139: 630:
Some major applications have been written as text macro invoked by other applications, e.g., by
549:
is a contextual pattern-matching macro processor, which could be described as a combination of
3088: 3083: 2920: 2812: 2667: 2643: 2583: 2550: 2512: 2497: 2436: 1815: 1282: 1276: 1161: 620: 465: 451: 244: 143: 119: 76: 2187: 1557: 2802: 2734: 2598: 2339: 2135: 1961: 1924: 1807: 1782: 1427: 1380: 1243: 1186: 1165: 408: 266: 248: 202: 135: 131: 1629: 1290: – programming mechanisms for extending the language, compiler and runtime environment 2852: 2726: 2592: 2293: 1296: 1271: 1200: 1193: 1121: 1023: 976: 972: 857: 613: 506: 416: 1533: 1865: 505:
has typed syntax macros, and one productive way to think of these syntax macros is as a
2904: 2560: 2426: 1847: 1301: 1092: 878: 872: 758: 473: 326: 304:(oorexx). Many common applications, and some on PCs, use Rexx as a scripting language. 187: 167: 61: 971:
Macro systems have a range of uses. Being able to choose the order of evaluation (see
209:
of most MMORPGs, and their administrators spend considerable effort to suppress them.
3208: 2890: 2105: 1605: 1002: 498: 477: 385:
wherever it occurs. An example of a parameterized macro, on the other hand, is this:
84: 1973: 1834: 1394: 1304: – Macros whose expansion is guaranteed not to cause the capture of identifiers 37: 3078: 2119: 1938: 1061:
machine-independent macro language. This macro compiler is applied to itself, in a
1026:
in macro systems that are unhygienic or allow selective unhygienic transformation.
992: 778: 733: 469: 1804:
LFP '86: Proceedings of the 1986 ACM conference on LISP and functional programming
901:
standards. A number of competing implementations of hygienic macros exist such as
761:; but these have a completely different syntax from the actual assembly language. 3033: 2772: 1251: 667: 301: 191: 325:
and executes when documents are opened. This makes it relatively easy to write
822: 751: 178: 108: 2140: 2123: 2075: 1432: 1415: 404:
pred(2) → ((2) -1) pred(y+2) → ((y+2) -1) pred(f(5)) → ((f(5))-1)
2071: 1204: 455: 334: 322: 300:(THE), a partial clone of XEDIT, supports Rexx macros using Regina and Open 256: 181:, then for a variety of user-input tasks. These programs were based on the 1965: 1929: 1912: 1811: 1385: 1368: 17: 1485: 573: 491:
and its derivatives, where most of the functionality is based on macros.
285: 174: 163: 1952:
Waite, William M. (July 1970). "The mobile programming system: STAGE2".
1866:"Honu: Syntactic Extension for Algebraic Notation through Enforestation" 1653: 1467: 1355: 1351: 1347: 1173:
effectively a middle step between assembly language programming and the
732:
language are written in a subset of PL/I itself: the compiler executes "
407:
Parameterized macros are a useful source-level mechanism for performing
225:, with direct access to the features of the application may also exist. 2124:"The History of Macro Processors in Programming Language Extensibility" 1787: 1228: 1178: 956: 845: 798: 603: 502: 494: 72: 255:
macros for Microsoft Office. Vim also has a scripting language called
194:, making it possible to create application-sensitive keyboard macros. 1677: 1224: 1136: 1053: 782: 579: 296:, and some CMS commands were actually wrappers around XEDIT macros. 1315: – Technique for teaching a computer or a robot new behaviors 1182: 838: 631: 624: 589: 567: 563: 527: 289: 273: 229: 79:
to a replacement output. Applying a macro to an input is known as
41: 1152:
have counterparts in routines available to high-level languages.
877:
In the mid-eighties, a number of papers introduced the notion of
898: 894: 890: 814: 729: 607: 599: 554: 539: 427: 293: 206: 3037: 2196: 1777:
Hart, Timothy P. (October 1963). "MACRO Definitions for LISP".
1066:
compiler). The advent of modern programming languages, notably
1005:
can be implemented in a way that is both natural and efficient.
2102:
HOPL: Online Historical Encyclopaedia of Programming Languages
2009: 661: 643: 558: 488: 487:
A classic use of macros is in the computer typesetting system
2155: 1207:
introduced conditional and recursive macros into the popular
30:"Macro language" redirects here. For ISO macrolanguages, see 1447: 889:). Hygienic macros have been standardized for Scheme in the 844:
In 1963, Timothy Hart proposed adding macros to Lisp 1.5 in
1737: 1719: 1581: 1448:"Runescape: The Massive Online Adventure Game by Jagex Ltd" 602:: for command-line macros and application macros in, e.g., 1124:
instruction to call an operating system function directly.
1192:
By the late 1950s the macro language was followed by the
1015:
into the application of a function to a set of arguments.
979:) enables the creation of new syntactic constructs (e.g. 166:. Separate programs for creating these macros are called 2188:
Rochester Institute of Technology, Professors Powerpoint
1911:
Orgass, Richard J.; Waite, William M. (September 1969).
744:, e.g., setting variables that other macros can access. 821:. They are also available as third-party extensions to 103:
sequences. Token and tree macros are supported in some
1321: – Replacing placeholders in a string with values 1095:(including macros such as OPEN, CLOSE, READ and WRITE) 130:
program generates and have been used to create entire
1848:"Composable and compilable macros: you want it when?" 596:(TSO): for command-line macros and application macros 586:(CMS): for command-line macros and application macros 1582:"About - Nemerle programming language official site" 1369:"The Share 709 System: Programming and Modification" 1292:
Pages displaying wikidata descriptions as a fallback
1164:
programming was commonly used to write programs for
924:
has combined the notions of hygienic macros with a "
401:
is passed to it. Here are some possible expansions:
3124: 3071: 2966: 2851: 2753: 2569: 2511: 2468: 2371: 2362: 2302: 2244: 2235: 422:The parameterized macros used in languages such as 173:During the 1980s, macro programs – originally 27:
Rule for substituting a set input with a set output
909:, explicit renaming, and syntactic closures. Both 863:use of words as a substitute for preceding words. 497:is an experimental system that seeks to reconcile 476:macros work by simple textual substitution at the 1367:Greenwald, Irwin D.; Kane, Maureen (April 1959). 1116:the executable code often terminated in either a 134:or program suites according to such variables as 2098:"Macro SAP – Macro compiler modification of SAP" 1246:of several newer programming languages, such as 998:Data sub-languages and domain-specific languages 917:have been standardized in the Scheme standards. 576:: for command-line macros and application macros 1258:libraries as well if not necessary, to improve 570:: for typesetting and formatting Unix manpages. 519:is a sophisticated stand-alone macro processor. 468:have rudimentary macro systems, implemented as 199:massively multiplayer online role-playing games 1901:, Matthias Felleisen, LL1 mailing list posting 3049: 2208: 75:that specifies how a certain input should be 8: 265:(VBA) is a programming language included in 83:. The input and output may be a sequence of 1720:"Sweet.js - Hygienic Macros for JavaScript" 696:. Unsourced material may be challenged and 394:What this macro expands to depends on what 3056: 3042: 3034: 2368: 2241: 2215: 2201: 2193: 2279:Programming in the large and in the small 2156:"syscall package - syscall - Go Packages" 2139: 2066:Holbrook, Bernard D.; Brown, W. Stanley. 2061: 2059: 1928: 1786: 1431: 1384: 837:Before Lisp had macros, it had so-called 716:Learn how and when to remove this message 111:or to extend the language, sometimes for 2040: 2038: 1913:"A base for a mobile programming system" 1606:"Macros - The Rust Programming Language" 36: 2046:"Assembler Language Macro Instructions" 1331: 1047:Macros for machine-independent software 1960:(7). New York, NY, USA: ACM: 415–421. 1923:(9). New York, NY, USA: ACM: 507–510. 1696:"Metaprogramming · The Julia Language" 1379:(2). New York, NY, USA: ACM: 128–133. 1534:"The Dylan Macro System — Open Dylan" 1279:(the origin of the concept of macros) 341:Parameterized and parameterless macro 236:; it was later ported to dialects of 7: 1120:instruction to call a routine, or a 694:adding citations to reliable sources 95:. Character macros are supported in 1416:"A General Purpose Macrogenerator" 360:, this is a typical macro that is 243:Another programmers' text editor, 71: 'long, large') is a rule or 25: 1836:Clinger, Rees. "Macros that Work" 1682:Haxe - The Cross-platform Toolkit 1250:, actively discourage the use of 1199:In 1959, Douglas E. Eastwood and 99:to make it easy to invoke common 2823:Partitioned global address space 1215:) programming languages through 1175:high-level programming languages 1109:macro—DTF (Define The File) for 1054:STAGE2 Mobile Programming System 848:57: MACRO Definitions for LISP. 666: 213:Application macros and scripting 2183:How to write Macro Instructions 1277:Assembly language § Macros 452:Assembly language § Macros 448:General-purpose macro processor 364:a parameterized macro, i.e., a 197:Keyboard macros can be used in 3065:Types of programming languages 1864:Rafkind, Jon; Flatt, Matthew. 1738:"LeMP Home Page · Enhanced C#" 547:General Purpose Macrogenerator 472:to the compiler or assembler. 323:Microsoft Windows system calls 1: 1988:"University of North Florida" 584:Conversational Monitor System 284:, supports macros written in 278:Conversational Monitor System 263:Visual Basic for Applications 228:The programmers' text editor 3197:Programming paradigms navbox 2350:Uniform Function Call Syntax 1313:Programming by demonstration 1105:instructions, e.g., for the 356:As a simple example, in the 2818:Parallel programming models 2792:Concurrent constraint logic 532:Template Attribute Language 411:, but in languages such as 381:to always be replaced with 183:terminate-and-stay-resident 3241: 2911:Metalinguistic abstraction 2778:Automatic mutual exclusion 870: 855: 616:: for formatting documents 445: 329:in VBA, commonly known as 311: 29: 2783:Choreographic programming 1954:Communications of the ACM 1917:Communications of the ACM 1340:Oxford English Dictionary 150:Keyboard and mouse macros 113:domain-specific languages 2833:Relativistic programming 1510:"Erlang -- Preprocessor" 1118:branch and link register 887:referential transparency 642:Some languages, such as 482:IBM High Level Assembler 442:Text-substitution macros 436:run-time code generation 1177:that followed, such as 1160:In the mid-1950s, when 507:multi-stage computation 314:Macro virus (computing) 3215:Programming constructs 2843:Structured concurrency 2228:Comparison by language 2141:10.1093/comjnl/28.1.29 2025:"IBM Knowledge Center" 1634:elixir-lang.github.com 1433:10.1093/comjnl/8.3.225 1288:Extensible programming 1072:compiler bootstrapping 358:C programming language 45: 3186:Programming languages 2808:Multitier programming 2624:Interface description 2224:Programming paradigms 1966:10.1145/362686.362691 1930:10.1145/363219.363226 1883:"Automata via Macros" 1812:10.1145/319838.319859 1468:"scripts: vim online" 1412:Strachey, Christopher 1386:10.1145/320964.320967 1091:peripheral access by 771:abstract syntax trees 128:conditional assembler 105:programming languages 97:software applications 40: 32:ISO 639 macrolanguage 2128:The Computer Journal 2078:on September 2, 2014 2029:IBM Knowledge Center 1806:. pp. 151–161. 1319:String interpolation 1239:such functionality. 1147:and associated data. 1143:statement to output 977:non-strict functions 690:improve this section 638:Embeddable languages 542:(Macro Language One) 50:computer programming 3225:Automation software 2948:Self-modifying code 2556:Probabilistic logic 2487:Functional reactive 2442:Expression-oriented 2396:Partial application 2108:on August 13, 2008. 1562:Scala Documentation 1058:machine-independent 926:tower of evaluators 738:procedural language 594:Time Sharing Option 551:regular expressions 528:Macro Extension TAL 501:and macro systems. 366:parameterless macro 347:parameterized macro 321:has access to most 298:The Hessling Editor 280:(CMS) component of 2861:Attribute-oriented 2634:List comprehension 2579:Algebraic modeling 2392:Anonymous function 2284:Design by contract 2254:Jackson structures 1700:docs.julialang.org 1373:Journal of the ACM 1308:Macro and security 1244:standard libraries 1170:macro instructions 1084:macro instructions 1008:Binding constructs 981:control structures 536:SMX: for web pages 466:assembly languages 460:Languages such as 259:to create macros. 223:scripting language 219:application macros 46: 3175:Computer language 3162: 3161: 3031: 3030: 2921:Program synthesis 2813:Organic computing 2749: 2748: 2654:Non-English-based 2629:Language-oriented 2407:Purely functional 2358: 2357: 2031:. 16 August 2013. 1610:doc.rust-lang.org 1352:macro-instruction 1283:Compound operator 1256:platform-agnostic 1166:digital computers 1162:assembly language 1133:system generation 1078:Assembly language 833:Early Lisp macros 726: 725: 718: 658:Procedural macros 409:in-line expansion 391:pred(x) ((x)-1) 276:, running on the 247:(a descendant of 144:assembly language 120:program statement 58:macro instruction 16:(Redirected from 3232: 3201: 3195: 3190: 3184: 3179: 3173: 3058: 3051: 3044: 3035: 2933:by demonstration 2838:Service-oriented 2828:Process-oriented 2803:Macroprogramming 2788:Concurrent logic 2659:Page description 2649:Natural language 2619:Grammar-oriented 2546:Nondeterministic 2535:Constraint logic 2437:Point-free style 2432:Functional logic 2369: 2340:Immutable object 2259:Block-structured 2242: 2217: 2210: 2203: 2194: 2170: 2169: 2167: 2166: 2152: 2146: 2145: 2143: 2116: 2110: 2109: 2104:. Archived from 2094: 2088: 2087: 2085: 2083: 2074:. Archived from 2063: 2054: 2053: 2042: 2033: 2032: 2021: 2015: 2014: 2001: 1995: 1994: 1992: 1984: 1978: 1977: 1949: 1943: 1942: 1932: 1908: 1902: 1897: 1891: 1890: 1879: 1873: 1872: 1870: 1861: 1855: 1854: 1852: 1846:Flatt, Matthew. 1843: 1837: 1832: 1826: 1825: 1799: 1793: 1792: 1790: 1774: 1768: 1767: 1765: 1763: 1757:"untitled email" 1752: 1746: 1745: 1734: 1728: 1727: 1716: 1710: 1709: 1707: 1706: 1692: 1686: 1685: 1674: 1668: 1667: 1665: 1664: 1650: 1644: 1643: 1641: 1640: 1626: 1620: 1619: 1617: 1616: 1602: 1596: 1595: 1593: 1592: 1578: 1572: 1571: 1569: 1568: 1554: 1548: 1547: 1545: 1544: 1530: 1524: 1523: 1521: 1520: 1506: 1500: 1499: 1497: 1496: 1490:www.metalevel.at 1482: 1476: 1475: 1464: 1458: 1457: 1455: 1454: 1444: 1438: 1437: 1435: 1420:Computer Journal 1414:(October 1965). 1408: 1402: 1401: 1388: 1364: 1358: 1336: 1293: 1272:Anaphoric macros 1217:macro processors 1194:Macro Assemblers 1187:machine language 1024:anaphoric macros 1014: 990: 986: 968:Evaluation order 916: 912: 908: 904: 884: 852:Anaphoric macros 765:Syntactic macros 748:Frame technology 721: 714: 710: 707: 701: 670: 662: 653: 649: 512:Other examples: 417:inline functions 384: 380: 327:computer viruses 267:Microsoft Office 136:operating system 21: 3240: 3239: 3235: 3234: 3233: 3231: 3230: 3229: 3205: 3204: 3199: 3193: 3188: 3182: 3177: 3171: 3168: 3163: 3158: 3120: 3111:Very high-level 3067: 3062: 3032: 3027: 2969: 2962: 2853:Metaprogramming 2847: 2763: 2758: 2745: 2727:Graph rewriting 2565: 2541:Inductive logic 2521:Abductive logic 2507: 2464: 2427:Dependent types 2375: 2354: 2326:Prototype-based 2306: 2304:Object-oriented 2298: 2294:Nested function 2289:Invariant-based 2231: 2221: 2179: 2174: 2173: 2164: 2162: 2154: 2153: 2149: 2118: 2117: 2113: 2096: 2095: 2091: 2081: 2079: 2065: 2064: 2057: 2044: 2043: 2036: 2023: 2022: 2018: 2005:"DTF (DOS/VSE)" 2003: 2002: 1998: 1990: 1986: 1985: 1981: 1951: 1950: 1946: 1910: 1909: 1905: 1898: 1894: 1881: 1880: 1876: 1868: 1863: 1862: 1858: 1850: 1845: 1844: 1840: 1833: 1829: 1822: 1801: 1800: 1796: 1776: 1775: 1771: 1761: 1759: 1755:Marshall, Joe. 1754: 1753: 1749: 1736: 1735: 1731: 1724:www.sweetjs.org 1718: 1717: 1713: 1704: 1702: 1694: 1693: 1689: 1676: 1675: 1671: 1662: 1660: 1652: 1651: 1647: 1638: 1636: 1628: 1627: 1623: 1614: 1612: 1604: 1603: 1599: 1590: 1588: 1580: 1579: 1575: 1566: 1564: 1556: 1555: 1551: 1542: 1540: 1532: 1531: 1527: 1518: 1516: 1508: 1507: 1503: 1494: 1492: 1486:"Prolog Macros" 1484: 1483: 1479: 1466: 1465: 1461: 1452: 1450: 1446: 1445: 1441: 1410: 1409: 1405: 1366: 1365: 1361: 1337: 1333: 1328: 1297:Fused operation 1291: 1268: 1262:and security. 1201:Douglas McIlroy 1158: 1131:job stream for 1122:supervisor call 1103:define constant 1080: 1049: 1012: 988: 984: 973:lazy evaluation 965: 914: 910: 906: 902: 882: 875: 869: 867:Hygienic macros 860: 858:Anaphoric macro 854: 835: 767: 722: 711: 705: 702: 687: 671: 660: 651: 647: 640: 530:, accompanying 458: 444: 405: 392: 382: 378: 375: 343: 316: 310: 215: 188:word processors 168:macro recorders 155:Keyboard macros 152: 81:macro expansion 35: 28: 23: 22: 15: 12: 11: 5: 3238: 3236: 3228: 3227: 3222: 3217: 3207: 3206: 3203: 3202: 3191: 3180: 3167: 3164: 3160: 3159: 3157: 3156: 3151: 3146: 3141: 3136: 3130: 3128: 3122: 3121: 3119: 3118: 3113: 3108: 3103: 3097: 3096: 3091: 3086: 3081: 3075: 3073: 3069: 3068: 3063: 3061: 3060: 3053: 3046: 3038: 3029: 3028: 3026: 3025: 3020: 3015: 3010: 3005: 3000: 2995: 2990: 2985: 2980: 2974: 2972: 2964: 2963: 2961: 2960: 2955: 2950: 2945: 2940: 2918: 2913: 2908: 2898: 2893: 2888: 2883: 2878: 2873: 2863: 2857: 2855: 2849: 2848: 2846: 2845: 2840: 2835: 2830: 2825: 2820: 2815: 2810: 2805: 2800: 2795: 2785: 2780: 2775: 2769: 2767: 2751: 2750: 2747: 2746: 2744: 2743: 2738: 2723:Transformation 2720: 2715: 2710: 2705: 2700: 2695: 2690: 2685: 2680: 2675: 2670: 2661: 2656: 2651: 2646: 2641: 2636: 2631: 2626: 2621: 2616: 2611: 2609:Differentiable 2606: 2596: 2589:Automata-based 2586: 2581: 2575: 2573: 2567: 2566: 2564: 2563: 2558: 2553: 2548: 2543: 2538: 2528: 2523: 2517: 2515: 2509: 2508: 2506: 2505: 2500: 2495: 2490: 2480: 2474: 2472: 2466: 2465: 2463: 2462: 2456:Function-level 2453: 2444: 2439: 2434: 2429: 2424: 2419: 2414: 2409: 2404: 2399: 2389: 2383: 2381: 2366: 2360: 2359: 2356: 2355: 2353: 2352: 2347: 2342: 2337: 2332: 2318: 2316: 2300: 2299: 2297: 2296: 2291: 2286: 2281: 2276: 2271: 2269:Non-structured 2266: 2261: 2256: 2250: 2248: 2239: 2233: 2232: 2222: 2220: 2219: 2212: 2205: 2197: 2191: 2190: 2185: 2178: 2177:External links 2175: 2172: 2171: 2147: 2111: 2089: 2055: 2034: 2016: 1996: 1979: 1944: 1903: 1892: 1874: 1856: 1838: 1827: 1820: 1794: 1769: 1747: 1729: 1711: 1687: 1669: 1645: 1621: 1597: 1573: 1549: 1525: 1501: 1477: 1459: 1439: 1426:(3): 225–241. 1403: 1359: 1330: 1329: 1327: 1324: 1323: 1322: 1316: 1310: 1305: 1302:Hygienic macro 1299: 1294: 1285: 1280: 1274: 1267: 1264: 1189:instructions. 1157: 1154: 1149: 1148: 1125: 1114: 1099: 1096: 1093:access methods 1079: 1076: 1048: 1045: 1017: 1016: 1009: 1006: 1003:state machines 999: 996: 969: 964: 961: 879:hygienic macro 873:Hygienic macro 871:Main article: 868: 865: 856:Main article: 853: 850: 834: 831: 766: 763: 759:loop unrolling 728:Macros in the 724: 723: 674: 672: 665: 659: 656: 639: 636: 628: 627: 617: 611: 597: 587: 577: 571: 561: 543: 537: 534: 525: 520: 474:C preprocessor 443: 440: 403: 387: 370: 342: 339: 312:Main article: 309: 306: 214: 211: 151: 148: 85:lexical tokens 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 3237: 3226: 3223: 3221: 3218: 3216: 3213: 3212: 3210: 3198: 3192: 3187: 3181: 3176: 3170: 3169: 3165: 3155: 3152: 3150: 3147: 3145: 3142: 3140: 3137: 3135: 3132: 3131: 3129: 3127: 3123: 3117: 3114: 3112: 3109: 3107: 3104: 3102: 3099: 3098: 3095: 3092: 3090: 3087: 3085: 3082: 3080: 3077: 3076: 3074: 3070: 3066: 3059: 3054: 3052: 3047: 3045: 3040: 3039: 3036: 3024: 3021: 3019: 3016: 3014: 3011: 3009: 3006: 3004: 3001: 2999: 2996: 2994: 2993:Data-oriented 2991: 2989: 2986: 2984: 2981: 2979: 2976: 2975: 2973: 2971: 2965: 2959: 2956: 2954: 2951: 2949: 2946: 2944: 2941: 2938: 2934: 2930: 2926: 2922: 2919: 2917: 2914: 2912: 2909: 2906: 2902: 2899: 2897: 2894: 2892: 2891:Homoiconicity 2889: 2887: 2884: 2882: 2879: 2877: 2874: 2871: 2867: 2864: 2862: 2859: 2858: 2856: 2854: 2850: 2844: 2841: 2839: 2836: 2834: 2831: 2829: 2826: 2824: 2821: 2819: 2816: 2814: 2811: 2809: 2806: 2804: 2801: 2799: 2798:Concurrent OO 2796: 2793: 2789: 2786: 2784: 2781: 2779: 2776: 2774: 2771: 2770: 2768: 2766: 2761: 2756: 2752: 2742: 2739: 2736: 2732: 2728: 2724: 2721: 2719: 2716: 2714: 2711: 2709: 2706: 2704: 2701: 2699: 2696: 2694: 2693:Set-theoretic 2691: 2689: 2686: 2684: 2681: 2679: 2676: 2674: 2673:Probabilistic 2671: 2669: 2665: 2662: 2660: 2657: 2655: 2652: 2650: 2647: 2645: 2642: 2640: 2637: 2635: 2632: 2630: 2627: 2625: 2622: 2620: 2617: 2615: 2612: 2610: 2607: 2604: 2600: 2597: 2594: 2590: 2587: 2585: 2582: 2580: 2577: 2576: 2574: 2572: 2568: 2562: 2559: 2557: 2554: 2552: 2549: 2547: 2544: 2542: 2539: 2536: 2532: 2529: 2527: 2524: 2522: 2519: 2518: 2516: 2514: 2510: 2504: 2501: 2499: 2496: 2494: 2491: 2488: 2484: 2481: 2479: 2476: 2475: 2473: 2471: 2467: 2461: 2457: 2454: 2452: 2451:Concatenative 2448: 2445: 2443: 2440: 2438: 2435: 2433: 2430: 2428: 2425: 2423: 2420: 2418: 2415: 2413: 2410: 2408: 2405: 2403: 2400: 2397: 2393: 2390: 2388: 2385: 2384: 2382: 2379: 2374: 2370: 2367: 2365: 2361: 2351: 2348: 2346: 2343: 2341: 2338: 2336: 2333: 2331: 2327: 2323: 2320: 2319: 2317: 2314: 2310: 2305: 2301: 2295: 2292: 2290: 2287: 2285: 2282: 2280: 2277: 2275: 2272: 2270: 2267: 2265: 2262: 2260: 2257: 2255: 2252: 2251: 2249: 2247: 2243: 2240: 2238: 2234: 2229: 2225: 2218: 2213: 2211: 2206: 2204: 2199: 2198: 2195: 2189: 2186: 2184: 2181: 2180: 2176: 2161: 2157: 2151: 2148: 2142: 2137: 2133: 2129: 2125: 2121: 2115: 2112: 2107: 2103: 2099: 2093: 2090: 2077: 2073: 2069: 2062: 2060: 2056: 2051: 2047: 2041: 2039: 2035: 2030: 2026: 2020: 2017: 2012: 2011: 2006: 2000: 1997: 1989: 1983: 1980: 1975: 1971: 1967: 1963: 1959: 1955: 1948: 1945: 1940: 1936: 1931: 1926: 1922: 1918: 1914: 1907: 1904: 1900: 1896: 1893: 1888: 1884: 1878: 1875: 1867: 1860: 1857: 1849: 1842: 1839: 1835: 1831: 1828: 1823: 1817: 1813: 1809: 1805: 1798: 1795: 1789: 1784: 1780: 1773: 1770: 1758: 1751: 1748: 1743: 1739: 1733: 1730: 1725: 1721: 1715: 1712: 1701: 1697: 1691: 1688: 1683: 1679: 1673: 1670: 1659: 1655: 1649: 1646: 1635: 1631: 1625: 1622: 1611: 1607: 1601: 1598: 1587: 1583: 1577: 1574: 1563: 1559: 1553: 1550: 1539: 1538:opendylan.org 1535: 1529: 1526: 1515: 1511: 1505: 1502: 1491: 1487: 1481: 1478: 1473: 1469: 1463: 1460: 1449: 1443: 1440: 1434: 1429: 1425: 1421: 1417: 1413: 1407: 1404: 1400: 1396: 1392: 1387: 1382: 1378: 1374: 1370: 1363: 1360: 1357: 1353: 1349: 1346: 1342: 1341: 1335: 1332: 1325: 1320: 1317: 1314: 1311: 1309: 1306: 1303: 1300: 1298: 1295: 1289: 1286: 1284: 1281: 1278: 1275: 1273: 1270: 1269: 1265: 1263: 1261: 1257: 1253: 1249: 1245: 1240: 1236: 1232: 1230: 1226: 1220: 1218: 1214: 1210: 1206: 1202: 1197: 1195: 1190: 1188: 1184: 1180: 1176: 1171: 1168:, the use of 1167: 1163: 1155: 1153: 1146: 1142: 1138: 1134: 1130: 1127:Generating a 1126: 1123: 1119: 1115: 1112: 1108: 1104: 1100: 1097: 1094: 1090: 1089: 1088: 1085: 1077: 1075: 1073: 1069: 1064: 1059: 1055: 1046: 1044: 1041: 1036: 1032: 1027: 1025: 1021: 1010: 1007: 1004: 1000: 997: 994: 993:continuations 982: 978: 974: 970: 967: 966: 962: 960: 958: 954: 950: 946: 942: 938: 934: 929: 927: 923: 918: 900: 896: 892: 888: 880: 874: 866: 864: 859: 851: 849: 847: 842: 840: 832: 830: 828: 824: 820: 816: 812: 808: 804: 800: 796: 792: 788: 784: 780: 779:S-expressions 776: 772: 764: 762: 760: 755: 753: 749: 745: 743: 739: 735: 731: 720: 717: 709: 699: 695: 691: 685: 684: 680: 675:This section 673: 669: 664: 663: 657: 655: 645: 637: 635: 633: 626: 622: 618: 615: 612: 609: 605: 601: 598: 595: 591: 588: 585: 581: 578: 575: 572: 569: 565: 562: 560: 556: 552: 548: 544: 541: 538: 535: 533: 529: 526: 524: 521: 518: 515: 514: 513: 510: 508: 504: 500: 499:static typing 496: 492: 490: 485: 483: 479: 475: 471: 470:preprocessors 467: 463: 457: 453: 449: 441: 439: 437: 433: 429: 425: 420: 418: 414: 410: 402: 400: 397: 390: 386: 374:PI 3.14159 373: 369: 367: 363: 359: 354: 352: 348: 340: 338: 336: 332: 331:macro viruses 328: 324: 320: 315: 307: 305: 303: 299: 295: 291: 287: 283: 279: 275: 271: 268: 264: 260: 258: 254: 250: 246: 241: 239: 235: 231: 226: 224: 220: 212: 210: 208: 204: 200: 195: 193: 189: 184: 180: 176: 171: 169: 165: 160: 156: 149: 147: 145: 141: 137: 133: 129: 125: 124:block of code 121: 116: 114: 110: 106: 102: 98: 94: 90: 86: 82: 78: 74: 70: 66: 63: 59: 55: 51: 43: 39: 33: 19: 3200:}} 3194:{{ 3189:}} 3183:{{ 3178:}} 3172:{{ 2998:Event-driven 2900: 2402:Higher-order 2330:Object-based 2163:. Retrieved 2159: 2150: 2134:(1): 29–33. 2131: 2127: 2114: 2106:the original 2101: 2092: 2080:. Retrieved 2076:the original 2049: 2028: 2019: 2008: 1999: 1982: 1957: 1953: 1947: 1920: 1916: 1906: 1895: 1887:cs.brown.edu 1886: 1877: 1859: 1841: 1830: 1803: 1797: 1778: 1772: 1760:. Retrieved 1750: 1741: 1732: 1723: 1714: 1703:. Retrieved 1699: 1690: 1681: 1672: 1661:. Retrieved 1658:nim-lang.org 1657: 1648: 1637:. Retrieved 1633: 1624: 1613:. Retrieved 1609: 1600: 1589:. Retrieved 1585: 1576: 1565:. Retrieved 1561: 1558:"Def Macros" 1552: 1541:. Retrieved 1537: 1528: 1517:. Retrieved 1513: 1504: 1493:. Retrieved 1489: 1480: 1471: 1462: 1451:. Retrieved 1442: 1423: 1419: 1406: 1398: 1376: 1372: 1362: 1344: 1338: 1334: 1254:in favor of 1241: 1237: 1233: 1221: 1198: 1191: 1169: 1159: 1150: 1140: 1128: 1117: 1102: 1083: 1081: 1057: 1050: 1028: 1018: 963:Applications 930: 919: 911:syntax-rules 903:syntax-rules 883:syntax-rules 876: 861: 843: 836: 768: 756: 746: 742:side effects 734:preprocessor 727: 712: 703: 688:Please help 676: 641: 629: 511: 493: 486: 459: 421: 406: 398: 393: 388: 377:This causes 376: 371: 365: 361: 355: 346: 344: 317: 272: 261: 242: 227: 218: 216: 196: 192:spreadsheets 172: 159:mouse macros 158: 154: 153: 117: 80: 68: 65: 60:"; from 57: 56:(short for " 53: 47: 44:macro editor 3220:Source code 3094:Interpreted 3008:Intentional 2988:Data-driven 2970:of concerns 2929:Inferential 2916:Multi-stage 2896:Interactive 2773:Actor-based 2760:distributed 2703:Stack-based 2503:Synchronous 2460:Value-level 2447:Applicative 2364:Declarative 2322:Class-based 2120:Layzell, P. 2082:February 2, 1788:1721.1/6111 1742:ecsharp.net 1586:nemerle.org 1472:www.vim.org 1260:portability 915:syntax-case 907:syntax-case 881:expansion ( 752:subroutines 623:for, e.g., 308:Macro virus 302:Object REXX 179:screenplays 93:syntax tree 3209:Categories 3126:Generation 3106:High-level 2983:Components 2968:Separation 2943:Reflective 2937:by example 2881:Extensible 2755:Concurrent 2731:Production 2718:Templating 2698:Simulation 2683:Scientific 2603:Spacecraft 2531:Constraint 2526:Answer set 2478:Flow-based 2378:comparison 2373:Functional 2345:Persistent 2309:comparison 2274:Procedural 2246:Structured 2237:Imperative 2165:2024-06-06 2160:pkg.go.dev 1821:0897912004 1791:. AIM-057. 1705:2021-04-05 1663:2021-04-05 1639:2021-04-05 1615:2021-04-05 1591:2021-04-05 1567:2021-04-05 1543:2021-04-05 1519:2021-05-24 1514:erlang.org 1495:2021-04-05 1453:2008-04-03 1326:References 1242:Moreover, 1213:high-level 1135:in, e.g., 1101:a list of 1031:components 987:but lacks 920:Recently, 823:JavaScript 446:See also: 109:code reuse 107:to enable 89:characters 18:Lisp macro 3101:Low-level 2870:Inductive 2866:Automatic 2688:Scripting 2387:Recursive 2072:Bell Labs 1205:Bell Labs 1063:bootstrap 1020:Felleisen 706:June 2014 677:does not 592:in IBM's 464:and some 456:Algorithm 335:Microsoft 257:Vimscript 164:automated 3166:See also 3116:Esoteric 3089:Compiled 3084:Assembly 3023:Subjects 3013:Literate 3003:Features 2958:Template 2953:Symbolic 2925:Bayesian 2905:Hygienic 2765:parallel 2644:Modeling 2639:Low-code 2614:End-user 2551:Ontology 2483:Reactive 2470:Dataflow 2122:(1985). 1974:11733598 1779:AI Memos 1678:"Macros" 1654:"macros" 1630:"Macros" 1395:27424222 1266:See also 1252:syscalls 648:<?php 634:in CMS. 619:Various 574:CMS EXEC 396:argument 351:function 175:SmartKey 140:platform 132:programs 3079:Machine 2978:Aspects 2886:Generic 2876:Dynamic 2735:Pattern 2713:Tactile 2678:Quantum 2668:filters 2599:Command 2498:Streams 2493:Signals 2264:Modular 1939:8164996 1229:CP/M-86 1179:FORTRAN 1156:History 1129:Stage 2 1035:modules 957:Nemerle 846:AI Memo 799:Nemerle 698:removed 683:sources 606:, CMS, 604:AmigaOS 503:Nemerle 495:MacroML 389:#define 383:3.14159 372:#define 101:command 91:, or a 73:pattern 42:jEdit's 3149:Fourth 3139:Second 2741:Visual 2708:System 2593:Action 2417:Strict 1972:  1937:  1818:  1762:May 3, 1393:  1356:macro- 1354:, and 1225:MS-DOS 1137:OS/360 1082:While 1040:Racket 955:, and 941:Elixir 922:Racket 897:, and 839:FEXPRs 817:, and 807:Elixir 787:Erlang 783:Prolog 621:shells 614:SCRIPT 580:EXEC 2 454:, and 432:Scheme 146:code. 77:mapped 3154:Fifth 3144:Third 3134:First 3072:Level 3018:Roles 2901:Macro 2664:Pipes 2584:Array 2561:Query 2513:Logic 2422:GADTs 2412:Total 2335:Agent 2050:Cisco 1991:(PDF) 1970:S2CID 1935:S2CID 1869:(PDF) 1851:(PDF) 1391:S2CID 1348:macro 1183:COBOL 1141:PUNCH 949:Dylan 945:Julia 933:Scala 819:Julia 795:Scala 791:Dylan 652:?> 632:XEDIT 625:Linux 610:, TSO 590:CLIST 568:nroff 564:troff 478:token 290:EXEC2 274:XEDIT 230:Emacs 67:μακρο 64: 62:Greek 54:macro 2666:and 2313:list 2084:2020 1816:ISBN 1764:2012 1345:s.v. 1227:and 1181:and 1033:and 985:cond 975:and 937:Rust 913:and 899:R7RS 895:R6RS 891:R5RS 825:and 815:Haxe 803:Rust 775:Lisp 730:PL/I 681:any 679:cite 650:and 608:OS/2 600:REXX 566:and 557:and 555:EBNF 545:The 540:ML/1 523:TRAC 430:and 428:PL/I 424:Lisp 294:REXX 292:and 286:EXEC 238:Lisp 234:TECO 207:EULA 190:and 157:and 52:, a 2571:DSL 2136:doi 2010:IBM 1962:doi 1925:doi 1808:doi 1783:hdl 1428:doi 1381:doi 1209:SAP 1203:of 1145:JCL 1111:DOS 1107:DCB 1013:let 953:Nim 811:Nim 692:by 644:PHP 582:in 559:AWK 489:TeX 362:not 319:VBA 253:VBA 245:Vim 205:or 203:TOS 87:or 48:In 3211:: 2935:, 2931:, 2927:, 2733:, 2729:, 2458:, 2449:, 2328:, 2324:, 2311:, 2158:. 2132:28 2130:. 2126:. 2100:. 2070:. 2058:^ 2048:. 2037:^ 2027:. 2007:. 1968:. 1958:13 1956:. 1933:. 1921:12 1919:. 1915:. 1885:. 1814:. 1781:. 1740:. 1722:. 1698:. 1680:. 1656:. 1632:. 1608:. 1584:. 1560:. 1536:. 1512:. 1488:. 1470:. 1422:. 1418:. 1397:. 1389:. 1375:. 1371:. 1350:, 1343:, 1248:Go 1219:. 1074:. 989:if 959:. 951:, 947:, 943:, 939:, 935:, 905:, 893:, 829:. 827:C# 813:, 809:, 805:, 801:, 797:, 793:, 789:, 785:, 754:. 553:, 517:m4 509:. 450:, 438:. 426:, 419:. 379:PI 368:: 353:. 345:A 288:, 282:VM 249:vi 240:. 170:. 138:, 115:. 3057:e 3050:t 3043:v 2939:) 2923:( 2907:) 2903:( 2872:) 2868:( 2794:) 2790:( 2762:, 2757:, 2737:) 2725:( 2605:) 2601:( 2595:) 2591:( 2537:) 2533:( 2489:) 2485:( 2398:) 2394:( 2380:) 2376:( 2315:) 2307:( 2230:) 2226:( 2216:e 2209:t 2202:v 2168:. 2144:. 2138:: 2086:. 2052:. 2013:. 1993:. 1976:. 1964:: 1941:. 1927:: 1889:. 1871:. 1853:. 1824:. 1810:: 1785:: 1766:. 1744:. 1726:. 1708:. 1684:. 1666:. 1642:. 1618:. 1594:. 1570:. 1546:. 1522:. 1498:. 1474:. 1456:. 1436:. 1430:: 1424:8 1383:: 1377:6 1068:C 719:) 713:( 708:) 704:( 700:. 686:. 462:C 413:C 399:x 69:- 34:. 20:)

Index

Lisp macro
ISO 639 macrolanguage

jEdit's
computer programming
Greek
pattern
mapped
lexical tokens
characters
syntax tree
software applications
command
programming languages
code reuse
domain-specific languages
program statement
block of code
conditional assembler
programs
operating system
platform
assembly language
automated
macro recorders
SmartKey
screenplays
terminate-and-stay-resident
word processors
spreadsheets

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.