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:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.