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