Knowledge

Macro (computer science)

Source 📝

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

Index

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
massively multiplayer online role-playing games

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