1288:
the element in the position it occupies. Hopefully in the above x and y will be registers on return. The last transforms is intended to load an atomic into a register and return the register. The first production would be used to generate the 360 "AR" (Add
Register) instruction with the appropriate values in general registers. The above example is only a part of a generator. Every generator expression evaluates to a value that con then be further processed. The last transform could just as well have been written as:
1313:"A metacompiler assists the task of compiler-building by automating its non creative aspects, those aspects that are the same regardless of the language which the produced compiler is to translate. This makes possible the design of languages which are appropriate to the specification of a particular problem. It reduces the cost of producing processors for such languages to a point where it becomes economically feasible to begin the solution of a problem with language design."
47:
586:
698:, etc. And X would be a metacompiler according to the Forth usage of metacompiler. A metacompiler operates at an abstraction level above the compiler it compiles. It only operates at the same (self-hosting compiler) level when compiling itself. One has to see the problem with this definition of metacompiler. It can be applied to most any language.
423:. Most common compilers written today are self-hosting compilers. Self-hosting is a powerful tool, of many metacompilers, allowing the easy extension of their own metaprogramming metalanguage. The feature that separates a metacompiler apart from other compiler compilers is that it takes as input a specialized
1279:
expr_gen(ADD) => <AR + (x*16)+y;> releasereg(y); return x; (SUB)=> <SR + (x*16)+y;> releasereg(y);
1167:
CWIC is a compiler development system composed of three special-purpose, domain specific, languages, each intended to permit the description of certain aspects of translation in a straight forward manner. The syntax language is used to describe the recognition of source text and the construction from
878:
The concept of the metamachine originally put forth by
Glennie is so simple that three hardware versions have been designed and one actually implemented. The latter at Washington University in St. Louis. This machine was built from macro-modular components and has for instructions the codes described
276:
A typical parser generator associates executable code with each of the rules of the grammar that should be executed when these rules are applied by the parser. These pieces of code are sometimes referred to as semantic action routines since they define the semantics of the syntactic structure that is
1287:
looks like (ADD), expr_gen(x) would be called with <something1> and return x. A variable in the unparse rule is a local variable that can be used in the production_code_generator. expr_gen(y) is called with <something2> and returns y. Here is a generator call in an unparse rule is passed
874:
building operations that combined recognized language elements with tree nodes. The tree structure representation of the input was then processed by a simple form of unparse rules. The unparse rules used node recognition and attribute testing that when matched resulted in the associated action being
854:
The LOT system was developed during 1966 at
Stanford Research Institute and was modeled very closely after Meta II. It had new special-purpose constructs allowing it to generate a compiler which could in turn, compile a subset of PL/I. This system had extensive statistic-gathering facilities and was
882:
CWIC (Compiler for
Writing and Implementing Compilers) is the last known Schorre metacompiler. It was developed at Systems Development Corporation by Erwin Book, Dewey Val Schorre and Steven J. Sherman With the full power of (lisp 2) a list processing language optimizing algorithms could operate on
752:
The early history of metacompilers is closely tied with the history of SIG/PLAN Working group 1 on Syntax Driven
Compilers. The group was started primarily through the effort of Howard Metcalfe in the Los Angeles area. In the fall of 1962, Howard Metcalfe designed two compiler-writing interpreters.
1275:
included the features of a general purpose programming language, plus a form: <stuff>, which would emit (stuff) onto the output file. A generator call may be used in the unparse_rule. The generator is passed the element of unparse_rule pattern in which it is placed and its return values are
934:
In programming it is common to use the programming language name to refer to both the compiler and the programming language, the context distinguishing the meaning. A C++ program is compiled using a C++ compiler. That also applies in the following. For example, META II is both the compiler and the
794:
and
Johnson at UCLA for the IBM 7090. Meta III represents an attempt to produce efficient machine code, for a large class of languages. Meta III was implemented completely in assembly language. Two compilers were written in Meta III, CODOL, a compiler-writing demonstration compiler, and PUREGOL, a
768:
Schorre bootstrapped Meta II from Meta I during the spring of 1963. The paper on the refined metacompiler system presented at the 1964 Philadelphia ACM conference is the first paper on a metacompiler available as a general reference. The syntax and implementation technique of
Schorre's system laid
756:
At the same time, Val
Schorre described two "meta machines", one generative and one analytic. The generative machine was implemented and produced random algebraic expressions. Meta I the first metacompiler was implemented by Schorre on an IBM 1401 at UCLA in January 1963. His original interpreters
809:
systems at SDC is Meta 5. The Meta 5 system incorporates backup of the input stream and enough other facilities to parse any context-sensitive language. This system was successfully released to a wide number of users and had many string-manipulation applications other than compiling. It has many
209:
for a parser of the programming language is returned as the parser generator's output. This source code can then be compiled into a parser, which may be either standalone or embedded. The compiled parser then accepts the source code of the target programming language as an input and performs an
749:. At roughly the same time, related work was being done by E. T. (Ned) Irons at Princeton, and Alick Glennie at the Atomic Weapons Research Establishment at Aldermaston whose "Syntax Machine" paper (declassified in 1977) inspired the META series of translator writing systems mentioned below.
666:, long established terminology in computer science. Metacompilers are a general compiler writing system. Besides the Forth metacompiler concept being indistinguishable from self-hosting and extensible language. The actual process acts at a lower level defining a minimum subset of forth
1105:
Each rule consists optionally of tests, operators, and output productions. A rule attempts to match some part of the input program source character stream returning success or failure. On success the input is advanced over matched characters. On failure the input is not advanced.
1280:
return x; (MUL)=> . . . (x)=> r1 = getreg(); load(r1, x); return r1; ...
670:, that can be used to define additional forth words, A full Forth implementation can then be defined from the base set. This sounds like a bootstrap process. The problem is that almost every general purpose language compiler also fits the Forth metacompiler description.
1235:: a named series of transforming rules, each consisting of an unparse, pattern matching, rule. and an output production written in a LISP 2 like language. the translation was to IBM 360 binary machine code. Other facilities of the generator language generalized output.
1078:
B. This is a specific characteristic of these metalanguages being programming languages. Backtracking is avoided by the above. Other compiler constructor systems may have declared the three possible sequences and left it up to the parser to figure it out.
764:
Lee
Schmidt at Bolt, Beranek, and Newman wrote a metacompiler in March 1963 that utilized a CRT display on the time-sharing PDP-l. This compiler produced actual machine code rather than interpretive code and was partially bootstrapped from Meta I.
447:
is a powerful attribute allowing easier development of computer programming languages and other computer tools. Command line processors, text string transforming and analysis are easily coded using metaprogramming metalanguages of metacompilers.
875:
performed. In addition like tree element could also be tested in an unparse rule. Unparse rules were also a recursive language being able to call unparse rules passing elements of thee tree before the action of the unparse rule was performed.
886:
With the resurgence of domain-specific languages and the need for parser generators which are easy to use, easy to understand, and easy to maintain, metacompilers are becoming a valuable tool for advanced software engineering projects.
1021:
is returned. The $ operator is always successful, even when there are zero declaration. Above program would always return success. (In CWIC a long fail can bypass declaration. A long-fail is part of the backtracking system of CWIC)
1267:
function-name(first-unparse_rule) => first-production_code_generator (second-unparse_rule) => second-production_code_generator (third-unparse_rule) => third-production_code_generator
342:' Semantic Implementation System (SIS) in 1978. However, both the generated compiler and the code it produced were inefficient in time and space. No production compilers are currently built in this way, but research continues.
753:
One used a bottom-to-top analysis technique based on a method described by Ledley and Wilson. The other used a top-to-bottom approach based on work by
Glennie to generate random English sentences from a context-free grammar.
401:
will usually be a powerful string and symbol processing language, they often have strong applications for general-purpose applications, including generating a wide range of other software engineering and analysis tools.
1090:
META I was a hand compiled metacompiler used to compile META II. Little else is known of META I except that the initial compilation of META II produced nearly identical code to that of the hand coded META I compiler.
858:
SIMPLE is a specialized translator system designed to aid the writing of pre-processors for PL/I, SIMPLE, written in PL/I, is composed of three components: An executive, a syntax analyzer and a semantic constructor.
701:
However, on examining the concept of programming in Forth, adding new words to the dictionary, extending the language in this way is metaprogramming. It is this metaprogramming in Forth that makes it a metacompiler.
1701:
930:
The earliest Schorre metacompilers, META I and META II, were developed by D. Val Schorre at UCLA. Other Schorre based metacompilers followed. Each adding improvements to language analysis and/or code generation.
1733:
Robert Ledley and J. B. Wilson, "Automatic Programming, Language Translation Through Syntactical Analysis", Communications of the Association for Computing Machinery, Vol. 5, No. 3 pp. 145–155, March 1962.
1806:
F. W. Schneider and (G. D. Johnson, "A Syntax-Directed Compiler-writing, Compiler to generate Efficient Code", Proceedings of the 19th National Conference of the Association for Computing Machinery, 1964
1197:: Transforms the source program input, into list structures using grammar transformation formula. A parsed expression structure is passed to a generator by placement of a generator call in a rule. A
938:
The metalanguages in the Schorre line of metacompilers are functional programming languages that use top down grammar analyzing syntax equations having embedded output transformation constructs.
709:. Forth is a metacompiler, because Forth is a language specifically designed for metaprogramming. Programming in Forth is extending Forth adding words to the Forth vocabulary creates a new Forth
783:
developed and implemented LOGIK, a language for logical design simulation, on the IBM 7090 in January 1964. This compiler used an algorithm that produced efficient code for Boolean expressions.
1225:. Trees created by syntax rules are passed to generator functions, returning success or failure. The syntax language is very close to TREE-META. Both use a colon to create a node. CWIC's
1742:
A. E. Glennie, "On the Syntax Machine and the Construction of a Universal Computer", Technical Report Number 2, AD 240–512, Computation Center, Carnegie Institute of Technology, 1960.
1724:
Howard Metcalfe, "A Parameterized Compiler Based on Mechanical Linguistics" Planning Research Corporation R-311, 1 March 1963, also in Annual Review in Automatic Programming, Vol. 4
2191:
870:
TREE META paralleled some of the SDC developments. Unlike earlier metacompilers it separated the semantics processing from the syntax processing. The syntax rules contained
1149:
Moving of output productions to the unparse rules made a clear separation of grammar analysis and code production. This made the programming easier to read and understand.
471:
or C++, is needed to write the support library. A library consisting of support functions needed for the compiling process usually completes the full metacompiler package.
256:
designed mainly for the purpose of constructing compilers. The language of the compiler produced is called the object language. The minimal input producing a compiler is a
1815:
D. Oppenheim and D. Haggerty, "META 5: A Tool to Manipulate Strings of Data", Proceedings of the 21st National Conference of the Association for Computing Machinery, 1966.
801:
In 1964, System Development Corporation began a major effort in the development of metacompilers. This effort includes powerful metacompilers, Bookl, and Book2 written in
2186:
1694:
959:. <name> is the function name. <body> is a form of logical expression consisting of tests that may be grouped, have alternates, and output productions. A
2542:
1836:. International Conference on Attribute Grammars and Their Applications. Lecture Notes in Computer Science. Vol. 461. New York: Springer-Verlag. pp. 1–12.
2532:
377:
Metacompilers reduce the task of writing compilers by automating the aspects that are the same regardless of the object language. This makes possible the design of
2100:
2547:
1536:
1661:
Peter Mosses, "SIS: A Compiler-Generator System Using Denotational Semantics," Report 78-4-3, Dept. of Computer Science, University of Aarhus, Denmark, June 1978
725:
and Derrick Morris in 1959, with initial testing beginning in March 1962. The Brooker Morris Compiler Compiler (BMCC) was used to create compilers for the new
639:
call the process of creating a new implementation of Forth a meta-compilation and that it constitutes a metacompiler. The Forth definition of metacompiler is:
1134:
moving the output production transforms to unparsed rules. The tree building operators were used in the grammar rules directly transforming the input into an
1068:
Special operator words whose first character is a "." are used for clarity. .EMPTY is used as the last alternate when no previous alternant need be present.
1888:
Charles R. Kirkley and Johns F. Rulifson, "The LOT System of Syntax Directed Compiling", Stanford Research Institute Internal Report ISR 187531-139, 1966.
2202:
866:
compiler was developed at Stanford Research Institute in Menlo Park, California. April 1968. The early metacompiler history is well documented in the
867:
1897:
George J. E. (1967a). Syntax Analyzer, Recognizer, Parser and Semantic interpretation System, Stanford Linear Accelerator Center, 15 November 1967.
798:
Late in 1964, Lee Schmidt bootstrapped the metacompiler EQGEN, from the PDP-l to the Beckman 420. EQGEN was a logic equation generating language.
1183:
building operators in the syntax language. The unparse rules of TREE-META are extended to work with the object based generator language based on
2207:
2196:
910:. While useful, pure parser generators only address the parsing part of the problem of building a compiler. Tools with broader scope, such as
419:
or an existing computer programming language. The process of a metacompiler, written in its own metalanguage, compiling itself is equivalent to
2537:
2164:
1859:
1512:
1294:
In this case load returns its first parameter, the register returned by getreg(). the functions load and getreg are other CWIC generators.
1065:
operator. The order of evaluation is always left to right as an input character sequence is being specified by the ordering of the tests.
604:
596:
319:
code, but had a flexible output system that could be used for everything from programming languages to text file conversion. Their modern
1611:
Book, Erwin; Dewey Val Schorre; Steven J. Sherman (June 1970). "The CWIC/36O system, a compiler for writing and implementing compilers".
1157:
In 1968–1970, Erwin Book, Dewey Val Schorre, and Steven J. Sherman developed CWIC. (Compiler for Writing and Implementing Compilers) at
427:
language that describes all aspects of the compiler's operation. A metaprogram produced by a metacompiler is as complete a program as a
1344:
919:
456:
64:
1676:
922:
provide considerable support for more difficult post-parsing activities such as semantic analysis, code optimization and generation.
2263:
1930:
1082:
The characteristics of the metaprogramming metalanguages above are common to all Schorre metacompilers and those derived from them.
769:
the foundation for most of the systems that followed. The system was implemented on a small 1401, and was used to implement a small
622:
324:
130:
547:(a higher level abstraction) specifically designed for the purpose of metaprogramming. The output is an executable object program.
2481:
1470:
1465:
810:
elaborate push-down stacks, attribute setting and testing facilities, and output mechanisms. That Meta 5 successfully translates
663:
656:
652:
420:
1788:
L. O. Schmidt, "The Status Bitt ACM SegPlan "Special Interest Group on Programming Languages" Working Group 1 News Letter, 1964.
674:
When (self-hosting compiler) X processes its own source code, resulting in an executable version of itself, X is a metacompiler.
111:
2486:
1322:
847:
162:
83:
2522:
1865:
1158:
761:, however, was written in a higher-level metalanguage able to describe its own compilation into the pseudo-machine language.
200:
68:
196:
1507:. Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman, Alfred V. Aho (Second ed.). Boston. 2007. p. 287.
409:
development, a metacompiler is a prime example of a domain-specific language, designed for the domain of compiler writing.
334:
Some experimental compiler-compilers take as input a formal description of programming language semantics, typically using
679:
1138:. Unparse rules are also test functions that matched tree patterns. Unparse rules are called from a grammar rule when an
90:
648:
636:
261:
218:
203:
of a generated compiler's target programming language and actions that should be taken against its specific constructs.
1575:
2491:
1257:
1244:
802:
464:
1797:
Roger Rutman, "LOGIK. A Syntax Directed Compiler for Computer Bit-Time Simulation", Master thesis, UCLA, August 1964.
2512:
2429:
2331:
1540:
1425:
1179:
The syntax language follows Dewey Val Schorre's previous line of metacompilers. It most resembles TREE-META having
691:
350:
293:
277:
analyzed by the parser. Depending upon the type of parser that should be generated, these routines may construct a
222:
97:
57:
2552:
1247:
for the IBM System/360 family of computers developed in 1968 and used for writing the underlying support library.
1001:
languages there is a driving rule. The program rule above is an example of a driving rule. The program rule is a
643:"A metacompiler is a compiler which processes its own source code, resulting in an executable version of itself."
381:
which are appropriate to the specification of a particular problem. A metacompiler reduces the cost of producing
35:
1683:. Technical Report 160, Department of Information and Computer Sciences, University of California, Irvine, 1980.
1553:"A Syntax Directed Compiler for ALGOL 60" Edgar T. Irons, Communications of the ACM Volume 4 Issue 1, Jan. 1961.
2562:
2557:
2527:
2326:
2298:
2216:
1460:
1353:
1303:
1299:
1029:
was used for the alternant (or) operator. "A or B" is written as A / B. Parentheses ( ) are used for grouping.
883:
syntax generated lists and trees before code generation. CWIC also had a symbol table built into the language.
830:
730:
468:
406:
390:
386:
378:
249:
986:
Defining a programming language analytically top down is natural. For example, a program could be defined as:
79:
389:
object languages to a point where it becomes economically feasible to include in the solution of a problem a
2434:
2377:
2336:
241:
1914:
1650:
The TREE-META Compiler-Compiler System: A Meta Compiler System for the Univac 1108 and General Electric 645
1837:
1482:
659:
382:
335:
316:
237:
2459:
2439:
2303:
2256:
1834:
Proceedings of the International Conference on Attribute Grammars and Their Applications (Paris, France)
1284:
1272:
1261:
1226:
1222:
1198:
1180:
1173:
1169:
871:
31:
508:
192:
368:
can be used for simultaneous type checking, constant propagation, and more during the parsing stage).
2471:
1951:
Gray, Robert W.; Levi, Steven P.; Heuring, Vincent P.; Sloane, Anthony M.; Waite, William M. (1992).
1143:
1139:
1135:
440:
282:
211:
170:
1842:
2476:
2444:
2382:
2360:
710:
460:
1161:
2408:
2127:
2114:
1974:
1922:
1628:
1530:
841:. Together with metacompiler of Val Schorre, it was an early inspiration for the last chapter of
452:
181:
705:
Programming in Forth is adding new words to the language. Changing the language in this way is
104:
2398:
2315:
2160:
2135:
1926:
1919:
Ein Compiler-Generator fĂĽr Mikrocomputer - Grundlagen, Anwendungen, Programmierung in Modula-2
1855:
1518:
1508:
1162:
Charles Babbage Institute Center for the History of Information Technology (Box 12, folder 21)
822:
361:
356:
Compiler-compilers exist in many flavors, including bottom-up rewrite machine generators (see
2064:
353:
does not formalize semantics, but does have a semi-formal framework for machine description.
2517:
2350:
2280:
2249:
2079:
2048:
2033:
2005:
1964:
1847:
1620:
1440:
1367:
734:
726:
536:
532:
493:
are data that describe other data. A language that is used to describe other languages is a
428:
245:
146:
1572:"Sci-Tech Dictionary McGraw-Hill Dictionary of Scientific and Technical Terms, 6th edition"
1201:
is represented by a list whose first element is a node object. The language has operators,
1146:
and unparse rules allowed local optimizations to be performed by analyzing the parse tree.
829:(presented in 1965). TMG was used to create early compilers for programming languages like
2220:
1680:
1671:
1477:
1455:
1264:
was thought of as a recursive list. The general form of a Generator Language function is:
706:
563:
540:
424:
413:
257:
1910:
1569:) A compiler that is used chiefly to construct compilers for other programming languages.
507:
operates on a higher level of abstraction in order to describe properties of a language.
1779:
Meta I is described in the paper given at the 1963 Colorado ACM conference. See SMALGOL.
647:
This Forth use of the term metacompiler is disputed in mainstream computer science. See
1373:
826:
738:
308:
265:
188:
2052:
2506:
2372:
2288:
2156:
2149:
498:
481:
288:
One of the earliest (1964), surprisingly powerful, versions of compiler-compilers is
1632:
360:) used to tile syntax trees according to a rewrite grammar for code generation, and
2403:
2060:
2029:
1978:
1035:
Describes a construct of A followed by B or C. As a boolean expression it would be
842:
805:
which have extensive tree-searching and backup ability. An outgrowth of one of the
722:
655:. The actual Forth process of compiling itself is a combination of a Forth being a
569:
544:
520:
512:
504:
494:
444:
398:
339:
253:
1826:
338:. This approach is often called 'semantics-based compiling', and was pioneered by
1109:
Output productions produced a form of assembly code directly from a syntax rule.
2449:
2355:
2144:
1755:, Proceedings of the 1964 19th ACM National Conference, pp. 41.301-41.3011, 1964
1445:
1172:
structure. The generator language is used to describe the transformation of the
320:
206:
46:
17:
2466:
2365:
1450:
278:
2084:
2010:
1993:
1229:
building exclamation !<number> functions the same as TREE-META's .
2345:
2293:
1851:
1571:
1522:
1435:
1430:
1393:
1333:
1118:
899:
863:
806:
528:
328:
304:
787:
1969:
1952:
1624:
1938:
1502:
742:
695:
516:
490:
233:
166:
1025:
The character sets of these early compilers were limited. The character
2272:
1765:
Dewey, Val Schorre (1963). "A Syntax – Directed SMALGOL for the 1401".
1362:
1239:
1100:
903:
758:
746:
687:
289:
158:
296:
code, and is able to compile its own source code and other languages.
2241:
1413:
1387:
1338:
1184:
915:
907:
895:
838:
811:
757:
and metamachines were written directly in a pseudo-machine language.
524:
2213:
2116:
Some Aspects of the Implementation of the Compiler Compiler on ATLAS
1221:
operator combines a number of parsed entries with a node to make a
713:. Forth is a specialized metacompiler for Forth language dialects.
432:
2232:
1403:
1328:
891:
780:
770:
683:
436:
365:
244:
for other programming languages. The input to a metacompiler is a
232:
is a software development tool used mainly in the construction of
992:
Defining a program as a sequence of zero or more declaration(s).
1398:
1378:
911:
834:
815:
357:
346:
312:
300:
2245:
2226:
1408:
579:
292:, which accepted an analytical grammar with output facilities
40:
1905:
1903:
1017:. The $ loop operator repeatedly calling declaration until
1381:, a compiler-compiler that is more than a parser generator.
191:
used as an input to a parser generator. It often resembles
1142:
is to be transformed into output code. The building of an
795:
dialect of ALGOL 60. (It was pure gall to call it ALGOL).
791:
890:
Other examples of parser generators in the yacc vein are
1953:"Eli: A complete, flexible compiler construction system"
1347:, a program transformation system with parser generators
855:
used to study the characteristics of top-down analysis.
721:
Design of the original Compiler Compiler was started by
199:(EBNF), or has its own syntax. Grammar files describe a
2192:
An Explanation of the Compiler Compiler listings (1963)
1471:
History of compiler construction#Self-hosting compilers
176:
The most common type of compiler-compiler is called a
2032:; MacCallum, I. R.; Morris, D.; Rohl, J. S. (1963).
1937:(NB. The book describes the construction of Coco in
1652:, University of Utah Technical Report RADC-TR-69-83.
1504:
Compilers : principles, techniques, & tools
786:
Another paper in the 1964 ACM proceedings describes
2422:
2391:
2314:
2279:
1753:
META II a syntax-oriented compiler writing language
1648:C. Stephen Carr, David A. Luther, Sherian Erdmann,
71:. Unsourced material may be challenged and removed.
2148:
1390:, an integrated toolset for compiler construction.
818:programs demonstrates its power and flexibility.
678:Just replace X with any common language, C, C++,
187:A formal description of a language is usually a
539:as their data. A metacompiler takes as input a
451:A full featured development package includes a
375:
1695:"Tony Brooker and the Atlas Compiler Compiler"
531:or meaning. Metaprogramming is the writing of
2257:
1256:Generators Language had semantics similar to
1123:TREE-META introduced tree building operators
1074:Indicates that X is optionally followed by A
8:
2223:, The Catalog of Compiler Construction Tools
2187:Tony Brooker and the Atlas Compiler Compiler
299:Among the earliest programs of the original
2063:; Morris, D.; Rohl, J. S. (February 1967).
1921:(in German) (1 ed.). Munich, Germany:
1209:, specifically for making lists. The colon
776:Many similar systems immediately followed.
260:specifying the object language grammar and
27:Program that generates parsers or compilers
2264:
2250:
2242:
1535:: CS1 maint: location missing publisher (
345:The Production Quality Compiler-Compiler (
315:system, which was normally used to output
169:from some form of formal description of a
2083:
2009:
1968:
1841:
1767:ACM National Conference, Denver, Colorado
1213:operator is used to create node objects.
623:Learn how and when to remove this message
285:), or generate executable code directly.
131:Learn how and when to remove this message
2102:An Introduction To The Compiler Compiler
1561:
1559:
2543:Extensible syntax programming languages
2138:. Computer Science Technical Report 32.
2065:"Experience with the Compiler Compiler"
1644:
1642:
1494:
1291:(x)=> return load(getreg(), x);
417:usually written in its own metalanguage
2533:Pattern matching programming languages
2041:Annual Review in Automatic Programming
1832:. In P. Deransart; M. Jourdan (eds.).
1673:Software Construction using Components
1606:
1604:
1602:
1600:
1598:
1596:
1594:
1592:
1528:
1370:, a Java library for building parsers.
2548:Domain-specific programming languages
2203:Original Compiler Compiler flowcharts
2155:. Englewood Cliffs, New Jersey, USA:
1217:creates an ADD node. The exclamation
906:, SID (Syntax Improving Device), and
157:is a programming tool that creates a
7:
825:invented a compiler-compiler called
217:Parser generators do not handle the
69:adding citations to reliable sources
1827:"The genesis of attribute grammars"
1005:function that calls declaration, a
550:An analogy can be drawn: That as a
2132:Yacc—yet another compiler-compiler
1345:DMS Software Reengineering Toolkit
1176:into appropriate object language.
920:DMS Software Reengineering Toolkit
595:tone or style may not reflect the
25:
2113:MacCallum, I. R. (January 1963).
2099:Napper, R. B. E (December 1965).
1245:mid level implementation language
2482:History of compiler construction
2134:. Murray Hill, New Jersey, USA:
1466:History of compiler construction
1049:A sequence X Y has an implied X
653:History of compiler construction
605:guide to writing better articles
584:
558:programming language program, a
500:on a higher level of abstraction
479:In computer science, the prefix
45:
2487:Comparison of parser generators
1871:from the original on 2020-11-23
1707:from the original on 2023-03-26
1693:Lavington, Simon (April 2016).
1578:from the original on 2018-04-07
1323:Comparison of parser generators
1190:CWIC includes three languages:
848:The Art of Computer Programming
635:Many advocates of the language
56:needs additional citations for
1359:LRSTAR: LR(*) parser generator
1159:System Development Corporation
463:. Usually, a machine-oriented
1:
2197:Compiler Compiler source code
2053:10.1016/S0066-4138(63)80009-9
1384:Syntax Improving Device (SID)
737:, Extended Mercury Autocode,
2538:Program transformation tools
2199:(starts around PDF page 182)
2147:; Wortman, David B. (1970).
1994:"A syntax improving program"
1276:listed in (). For example:
1271:The code to process a given
944:<name> = <body>;
649:Forth (programming language)
523:, for it describes only the
2492:Operator-precedence grammar
527:and says nothing about the
475:The meaning of metacompiler
465:system programming language
2579:
2235:, Jflex and Cup resources
1426:Parsing expression grammar
1320:
1310:From the authors of CWIC:
1116:
1098:
562:compiler takes as input a
554:compiler takes as input a
535:with the ability to treat
515:originally used to define
351:Carnegie Mellon University
294:that produce stack machine
223:generation of machine code
29:
2214:Catalog.compilertools.net
1957:Communications of the ACM
1574:. McGraw-Hill Companies.
1300:domain-specific languages
989:program = $ declaration;
733:, for several languages:
545:specialized metalanguages
485:is commonly used to mean
405:Besides being useful for
379:domain-specific languages
197:extended Backus–Naur form
36:source-to-source compiler
1461:Domain-specific language
1304:domain-specific language
731:University of Manchester
487:about (its own category)
407:domain-specific language
391:domain-specific language
364:parser generators (e.g.
303:versions being built at
264:transformations into an
225:for the target machine.
30:Not to be confused with
2435:Definite clause grammar
2034:"The compiler-compiler"
1852:10.1007/3-540-53101-7_1
662:language and sometimes
599:used on Knowledge (XXG)
2143:McKeeman, William M.;
2085:10.1093/comjnl/9.4.350
2011:10.1093/comjnl/11.1.31
1992:Foster, J. M. (1968).
1825:Knuth, Donald (1990).
1483:Program transformation
1350:Epsilon Grammar Studio
1283:That is, if the parse
1168:it to an intermediate
660:extensible programming
603:See Knowledge (XXG)'s
443:. The metaprogramming
395:
336:denotational semantics
317:C programming language
2523:Compiler construction
2440:Deterministic parsing
1970:10.1145/129630.129637
1915:Mössenböck, Hanspeter
1625:10.1145/954344.954345
1539:) CS1 maint: others (
926:Schorre metalanguages
497:. Meta may also mean
439:or any other general
421:self-hosting compiler
210:action or outputs an
32:self-hosting compiler
2151:A Compiler Generator
1998:The Computer Journal
1489:References and notes
1144:abstract syntax tree
1140:abstract syntax tree
1136:abstract syntax tree
995:In the Schorre META
967:in other languages,
441:programming language
412:A metacompiler is a
397:As a metacompiler's
283:abstract syntax tree
212:abstract syntax tree
171:programming language
65:improve this article
2477:Scannerless parsing
2445:Dynamic programming
2210:, Brooker Autocodes
2128:Johnson, Stephen C.
1613:ACM SIGPLAN Notices
1252:Generators language
1071:X (A / B / .EMPTY)
1009:rule, that returns
951:function returning
941:A syntax equation:
221:of the AST, or the
80:"Compiler-compiler"
2273:Parsing algorithms
2219:2011-08-13 at the
1923:Carl Hanser Verlag
1679:2018-03-18 at the
821:Robert McClure at
576:Forth metacompiler
511:(BNF) is a formal
182:syntactic analysis
180:. It handles only
155:compiler generator
2513:Parser generators
2500:
2499:
2299:Recursive descent
2166:978-0-13-155077-3
2145:Horning, James J.
2136:Bell Laboratories
1911:Rechenberg, Peter
1861:978-3-540-53101-2
1670:Neighbors, J. M.
1514:978-0-321-48681-3
1243:: an independent
1057:are grouping and
868:TREE META manual.
823:Texas Instruments
664:cross compilation
633:
632:
625:
597:encyclopedic tone
533:computer programs
362:attribute grammar
307:was the two-part
151:compiler-compiler
141:
140:
133:
115:
16:(Redirected from
2570:
2553:Program analysis
2455:Parser generator
2378:Recursive ascent
2266:
2259:
2252:
2243:
2238:
2227:Labraj.uni-mb.si
2176:
2174:
2173:
2154:
2139:
2123:
2121:
2109:
2107:
2095:
2093:
2092:
2087:
2072:Computer Journal
2069:
2056:
2038:
2016:
2015:
2013:
1989:
1983:
1982:
1972:
1948:
1942:
1936:
1907:
1898:
1895:
1889:
1886:
1880:
1879:
1877:
1876:
1870:
1845:
1831:
1822:
1816:
1813:
1807:
1804:
1798:
1795:
1789:
1786:
1780:
1777:
1771:
1770:
1762:
1756:
1751:Schorre, D. V.,
1749:
1743:
1740:
1734:
1731:
1725:
1722:
1716:
1715:
1713:
1712:
1706:
1699:
1690:
1684:
1668:
1662:
1659:
1653:
1646:
1637:
1636:
1608:
1587:
1586:
1584:
1583:
1567:computer science
1563:
1554:
1551:
1545:
1544:
1534:
1526:
1499:
1441:Simple LR parser
1356:parser generator
1302:before the term
779:Roger Rutman of
773:-like language.
735:Mercury Autocode
729:computer at the
628:
621:
617:
614:
608:
607:for suggestions.
588:
587:
580:
519:. BNF is a weak
509:Backus–Naur form
246:computer program
193:Backus–Naur form
178:parser generator
147:computer science
136:
129:
125:
122:
116:
114:
73:
49:
41:
21:
18:Parser generator
2578:
2577:
2573:
2572:
2571:
2569:
2568:
2567:
2563:Compiler theory
2558:Software design
2528:Metaprogramming
2503:
2502:
2501:
2496:
2418:
2387:
2310:
2275:
2270:
2236:
2221:Wayback Machine
2183:
2171:
2169:
2167:
2142:
2126:
2119:
2112:
2105:
2098:
2090:
2088:
2067:
2059:
2036:
2028:
2025:
2023:Further reading
2020:
2019:
1991:
1990:
1986:
1950:
1949:
1945:
1933:
1909:
1908:
1901:
1896:
1892:
1887:
1883:
1874:
1872:
1868:
1862:
1843:10.1.1.105.5365
1829:
1824:
1823:
1819:
1814:
1810:
1805:
1801:
1796:
1792:
1787:
1783:
1778:
1774:
1764:
1763:
1759:
1750:
1746:
1741:
1737:
1732:
1728:
1723:
1719:
1710:
1708:
1704:
1697:
1692:
1691:
1687:
1681:Wayback Machine
1669:
1665:
1660:
1656:
1647:
1640:
1610:
1609:
1590:
1581:
1579:
1570:
1565:Metacompiler: (
1564:
1557:
1552:
1548:
1527:
1515:
1501:
1500:
1496:
1491:
1478:Metacompilation
1456:Domain analysis
1422:
1325:
1319:
1308:
1298:CWIC addressed
1292:
1281:
1269:
1254:
1155:
1121:
1115:
1103:
1097:
1088:
1072:
1047:
1033:
990:
945:
928:
790:, developed by
719:
707:metaprogramming
629:
618:
612:
609:
602:
593:This section's
589:
585:
578:
489:. For example,
477:
425:metaprogramming
387:domain-specific
374:
274:
137:
126:
120:
117:
74:
72:
62:
50:
39:
28:
23:
22:
15:
12:
11:
5:
2576:
2574:
2566:
2565:
2560:
2555:
2550:
2545:
2540:
2535:
2530:
2525:
2520:
2515:
2505:
2504:
2498:
2497:
2495:
2494:
2489:
2484:
2479:
2474:
2469:
2464:
2463:
2462:
2452:
2447:
2442:
2437:
2432:
2426:
2424:
2423:Related topics
2420:
2419:
2417:
2416:
2413:
2412:
2411:
2401:
2395:
2393:
2389:
2388:
2386:
2385:
2380:
2375:
2370:
2369:
2368:
2363:
2358:
2353:
2343:
2342:
2341:
2340:
2339:
2329:
2320:
2318:
2312:
2311:
2309:
2308:
2307:
2306:
2304:Tail recursive
2296:
2291:
2285:
2283:
2277:
2276:
2271:
2269:
2268:
2261:
2254:
2246:
2240:
2239:
2230:
2224:
2211:
2208:Computer50.org
2205:
2200:
2194:
2189:
2182:
2181:External links
2179:
2178:
2177:
2165:
2140:
2124:
2110:
2096:
2061:Brooker, R .A.
2057:
2030:Brooker, R. A.
2024:
2021:
2018:
2017:
1984:
1963:(2): 121–130.
1943:
1931:
1899:
1890:
1881:
1860:
1817:
1808:
1799:
1790:
1781:
1772:
1757:
1744:
1735:
1726:
1717:
1685:
1663:
1654:
1638:
1588:
1555:
1546:
1513:
1493:
1492:
1490:
1487:
1486:
1485:
1480:
1475:
1474:
1473:
1463:
1458:
1453:
1448:
1443:
1438:
1433:
1428:
1421:
1418:
1417:
1416:
1411:
1406:
1401:
1396:
1391:
1385:
1382:
1376:
1374:Packrat parser
1371:
1365:
1360:
1357:
1351:
1348:
1342:
1336:
1331:
1318:
1315:
1307:
1296:
1290:
1278:
1266:
1253:
1250:
1249:
1248:
1236:
1230:
1154:
1151:
1117:Main article:
1114:
1111:
1099:Main article:
1096:
1093:
1087:
1084:
1070:
1037:
1031:
988:
947:is a compiled
943:
927:
924:
739:Atlas Autocode
718:
715:
676:
675:
645:
644:
631:
630:
592:
590:
583:
577:
574:
476:
473:
373:
370:
273:
270:
266:object program
139:
138:
53:
51:
44:
26:
24:
14:
13:
10:
9:
6:
4:
3:
2:
2575:
2564:
2561:
2559:
2556:
2554:
2551:
2549:
2546:
2544:
2541:
2539:
2536:
2534:
2531:
2529:
2526:
2524:
2521:
2519:
2516:
2514:
2511:
2510:
2508:
2493:
2490:
2488:
2485:
2483:
2480:
2478:
2475:
2473:
2470:
2468:
2465:
2461:
2458:
2457:
2456:
2453:
2451:
2448:
2446:
2443:
2441:
2438:
2436:
2433:
2431:
2428:
2427:
2425:
2421:
2414:
2410:
2407:
2406:
2405:
2402:
2400:
2397:
2396:
2394:
2390:
2384:
2381:
2379:
2376:
2374:
2371:
2367:
2364:
2362:
2359:
2357:
2354:
2352:
2349:
2348:
2347:
2344:
2338:
2337:Shunting-yard
2335:
2334:
2333:
2330:
2328:
2325:
2324:
2322:
2321:
2319:
2317:
2313:
2305:
2302:
2301:
2300:
2297:
2295:
2292:
2290:
2287:
2286:
2284:
2282:
2278:
2274:
2267:
2262:
2260:
2255:
2253:
2248:
2247:
2244:
2234:
2231:
2228:
2225:
2222:
2218:
2215:
2212:
2209:
2206:
2204:
2201:
2198:
2195:
2193:
2190:
2188:
2185:
2184:
2180:
2168:
2162:
2158:
2157:Prentice-Hall
2153:
2152:
2146:
2141:
2137:
2133:
2130:(July 1975).
2129:
2125:
2118:
2117:
2111:
2104:
2103:
2097:
2086:
2081:
2077:
2073:
2066:
2062:
2058:
2054:
2050:
2046:
2042:
2035:
2031:
2027:
2026:
2022:
2012:
2007:
2003:
1999:
1995:
1988:
1985:
1980:
1976:
1971:
1966:
1962:
1958:
1954:
1947:
1944:
1940:
1934:
1932:3-446-14495-1
1928:
1924:
1920:
1916:
1912:
1906:
1904:
1900:
1894:
1891:
1885:
1882:
1867:
1863:
1857:
1853:
1849:
1844:
1839:
1835:
1828:
1821:
1818:
1812:
1809:
1803:
1800:
1794:
1791:
1785:
1782:
1776:
1773:
1768:
1761:
1758:
1754:
1748:
1745:
1739:
1736:
1730:
1727:
1721:
1718:
1703:
1696:
1689:
1686:
1682:
1678:
1675:
1674:
1667:
1664:
1658:
1655:
1651:
1645:
1643:
1639:
1634:
1630:
1626:
1622:
1618:
1614:
1607:
1605:
1603:
1601:
1599:
1597:
1595:
1593:
1589:
1577:
1573:
1568:
1562:
1560:
1556:
1550:
1547:
1542:
1538:
1532:
1524:
1520:
1516:
1510:
1506:
1505:
1498:
1495:
1488:
1484:
1481:
1479:
1476:
1472:
1469:
1468:
1467:
1464:
1462:
1459:
1457:
1454:
1452:
1449:
1447:
1444:
1442:
1439:
1437:
1434:
1432:
1429:
1427:
1424:
1423:
1419:
1415:
1412:
1410:
1407:
1405:
1402:
1400:
1397:
1395:
1392:
1389:
1386:
1383:
1380:
1377:
1375:
1372:
1369:
1366:
1364:
1361:
1358:
1355:
1352:
1349:
1346:
1343:
1340:
1337:
1335:
1332:
1330:
1327:
1326:
1324:
1316:
1314:
1311:
1305:
1301:
1297:
1295:
1289:
1286:
1277:
1274:
1265:
1263:
1259:
1251:
1246:
1242:
1241:
1237:
1234:
1231:
1228:
1224:
1220:
1216:
1212:
1208:
1204:
1200:
1196:
1193:
1192:
1191:
1188:
1186:
1182:
1177:
1175:
1171:
1165:
1163:
1160:
1152:
1150:
1147:
1145:
1141:
1137:
1133:
1130:
1126:
1120:
1112:
1110:
1107:
1102:
1094:
1092:
1085:
1083:
1080:
1077:
1069:
1066:
1064:
1060:
1056:
1052:
1045:
1041:
1036:
1030:
1028:
1023:
1020:
1016:
1012:
1008:
1004:
1000:
999:
993:
987:
984:
982:
978:
974:
970:
966:
962:
958:
954:
950:
942:
939:
936:
932:
925:
923:
921:
917:
913:
909:
905:
901:
897:
893:
888:
884:
880:
876:
873:
869:
865:
860:
856:
852:
850:
849:
844:
840:
836:
832:
828:
824:
819:
817:
813:
808:
804:
799:
796:
793:
789:
784:
782:
777:
774:
772:
766:
762:
760:
754:
750:
748:
744:
740:
736:
732:
728:
724:
716:
714:
712:
708:
703:
699:
697:
693:
689:
685:
681:
673:
672:
671:
669:
665:
661:
658:
654:
650:
642:
641:
640:
638:
627:
624:
616:
606:
600:
598:
591:
582:
581:
575:
573:
571:
568:
566:
561:
557:
553:
548:
546:
543:written in a
542:
538:
534:
530:
526:
522:
518:
514:
510:
506:
502:
501:
496:
492:
488:
484:
483:
474:
472:
470:
466:
462:
458:
454:
449:
446:
442:
438:
434:
430:
426:
422:
418:
415:
410:
408:
403:
400:
394:
392:
388:
384:
380:
372:Metacompilers
371:
369:
367:
363:
359:
354:
352:
349:) project at
348:
343:
341:
337:
332:
330:
326:
323:versions are
322:
318:
314:
310:
306:
302:
297:
295:
291:
286:
284:
280:
271:
269:
267:
263:
259:
255:
251:
248:written in a
247:
243:
239:
235:
231:
226:
224:
220:
215:
213:
208:
204:
202:
198:
194:
190:
185:
183:
179:
174:
173:and machine.
172:
168:
164:
160:
156:
152:
148:
143:
135:
132:
124:
113:
110:
106:
103:
99:
96:
92:
89:
85:
82: –
81:
77:
76:Find sources:
70:
66:
60:
59:
54:This article
52:
48:
43:
42:
37:
33:
19:
2454:
2392:Mixed, other
2383:Shift-reduce
2237:(in Italian)
2170:. Retrieved
2150:
2131:
2115:
2101:
2089:. Retrieved
2075:
2071:
2044:
2040:
2001:
1997:
1987:
1960:
1956:
1946:
1918:
1893:
1884:
1873:. Retrieved
1833:
1820:
1811:
1802:
1793:
1784:
1775:
1766:
1760:
1752:
1747:
1738:
1729:
1720:
1709:. Retrieved
1688:
1672:
1666:
1657:
1649:
1619:(6): 11–29.
1616:
1612:
1580:. Retrieved
1566:
1549:
1503:
1497:
1312:
1309:
1293:
1282:
1270:
1260:. The parse
1255:
1238:
1232:
1218:
1214:
1210:
1206:
1202:
1194:
1189:
1178:
1166:
1156:
1148:
1132:
1128:
1124:
1122:
1108:
1104:
1089:
1081:
1075:
1073:
1067:
1062:
1058:
1054:
1050:
1048:
1043:
1039:
1034:
1026:
1024:
1018:
1014:
1010:
1006:
1002:
997:
996:
994:
991:
985:
980:
976:
972:
968:
964:
960:
956:
952:
948:
946:
940:
937:
933:
929:
902:, Eli, FSL,
889:
885:
881:
879:by Schorre.
877:
861:
857:
853:
846:
843:Donald Knuth
820:
814:programs to
800:
797:
785:
778:
775:
767:
763:
755:
751:
723:Tony Brooker
720:
704:
700:
677:
667:
657:self-hosting
646:
634:
619:
610:
594:
570:metalanguage
564:
559:
555:
551:
549:
521:metalanguage
513:metalanguage
505:metalanguage
499:
495:metalanguage
486:
480:
478:
450:
445:metalanguage
416:
411:
404:
399:metalanguage
396:
376:
355:
344:
340:Peter Mosses
333:
298:
287:
275:
254:metalanguage
252:programming
242:interpreters
230:metacompiler
229:
227:
216:
205:
186:
177:
175:
154:
150:
144:
142:
127:
121:October 2015
118:
108:
101:
94:
87:
75:
63:Please help
58:verification
55:
2450:Memoization
2415:Statistical
2409:Left corner
2366:Generalized
2323:Precedence
2047:: 229–275.
1446:LALR parser
1053:Y meaning.
613:August 2015
567:programming
541:metaprogram
431:written in
414:metaprogram
383:translators
258:metaprogram
250:specialized
238:translators
207:Source code
163:interpreter
2507:Categories
2467:Parse tree
2399:Combinator
2356:Look-ahead
2172:2012-12-13
2091:2021-05-07
1875:2020-02-06
1711:2023-09-29
1582:2018-04-07
1451:GLR parser
1321:See also:
1032:A (B / C)
963:is like a
935:language.
467:, such as
279:parse tree
91:newspapers
2361:Canonical
2316:Bottom-up
2122:(Thesis).
2004:: 31–34.
1838:CiteSeerX
1531:cite book
1436:LR parser
1431:LL parser
1394:TREE-META
1368:parboiled
1334:GNU Bison
1233:Generator
1131:> and
1129:node_name
1119:TREE-META
1113:TREE-META
900:GNU Bison
864:TREE-META
792:Schneider
572:program.
529:semantics
385:for such
305:Bell Labs
234:compilers
219:semantics
2332:Operator
2281:Top-down
2233:Skenz.it
2217:Archived
1939:Modula-2
1917:(1985).
1866:Archived
1702:Archived
1677:Archived
1633:44675240
1576:Archived
1523:70775643
1420:See also
1341:, Coco-2
1317:Examples
788:Meta III
781:AC Delco
745:and ASA
743:ALGOL 60
696:Modula-2
537:programs
517:ALGOL 60
491:metadata
459:support
457:run time
272:Variants
262:semantic
167:compiler
2518:Parsing
2078:: 350.
1979:5121773
1363:META II
1306:existed
1240:MOL-360
1101:META II
1095:META II
1019:failure
1015:failure
1011:success
977:failure
969:success
957:failure
953:success
904:SableCC
898:, CUP,
759:META II
747:Fortran
717:History
711:dialect
688:Fortran
461:library
429:program
393:design.
290:META II
214:(AST).
195:(BNF),
189:grammar
105:scholar
2351:Simple
2327:Simple
2289:Earley
2229:, Lisa
2163:
1977:
1929:
1858:
1840:
1631:
1521:
1511:
1414:JavaCC
1388:SYNTAX
1339:Coco/R
1195:Syntax
1185:LISP 2
1086:META I
979:being
971:being
916:Coco/R
908:JavaCC
896:Coco/R
839:ALTRAN
812:JOVIAL
680:Pascal
525:syntax
455:and a
453:linker
240:, and
201:syntax
159:parser
107:
100:
93:
86:
78:
2404:Chart
2120:(PDF)
2106:(PDF)
2068:(PDF)
2037:(PDF)
1975:S2CID
1869:(PDF)
1830:(PDF)
1705:(PDF)
1698:(PDF)
1629:S2CID
1404:Xtext
1354:Lemon
1329:ANTLR
981:false
892:ANTLR
771:ALGOL
727:Atlas
684:COBOL
668:words
637:Forth
437:BASIC
366:ANTLR
358:JBurg
329:bison
165:, or
112:JSTOR
98:books
2460:LALR
2161:ISBN
1927:ISBN
1856:ISBN
1541:link
1537:link
1519:OCLC
1509:ISBN
1399:Yacc
1379:PQCC
1285:tree
1273:tree
1262:tree
1258:Lisp
1227:tree
1223:tree
1215::ADD
1207:>
1205:and
1203:<
1199:tree
1181:tree
1174:tree
1170:tree
1153:CWIC
1127:<
1061:the
1007:test
1003:test
975:and
973:true
965:bool
961:test
949:test
918:and
912:PQCC
872:tree
862:The
837:and
835:PL/I
816:PL/I
807:Q-32
803:Lisp
651:and
565:meta
560:meta
503:. A
482:meta
347:PQCC
327:and
325:flex
313:yacc
311:and
301:Unix
281:(or
149:, a
84:news
2472:AST
2430:PEG
2373:CYK
2080:doi
2049:doi
2006:doi
1965:doi
1848:doi
1621:doi
1409:XPL
1268:...
1055:( )
1051:and
1046:C)
1042:(B
1040:and
1013:or
955:or
845:'s
827:TMG
692:Ada
556:C++
552:C++
433:C++
321:GNU
309:lex
153:or
145:In
67:by
34:or
2509::
2346:LR
2294:LL
2159:.
2074:.
2070:.
2043:.
2039:.
2002:11
2000:.
1996:.
1973:.
1961:35
1959:.
1955:.
1941:.)
1925:.
1913:;
1902:^
1864:.
1854:.
1846:.
1700:.
1641:^
1627:.
1615:.
1591:^
1558:^
1533:}}
1529:{{
1517:.
1187:.
1164:,
1076:or
1063:or
1044:or
1038:A
983:.
914:,
894:,
851:.
833:,
741:,
694:,
690:,
686:,
682:,
435:,
331:.
268:.
236:,
228:A
184:.
161:,
2265:e
2258:t
2251:v
2175:.
2108:.
2094:.
2082::
2076:9
2055:.
2051::
2045:3
2014:.
2008::
1981:.
1967::
1935:.
1878:.
1850::
1769:.
1714:.
1635:.
1623::
1617:5
1585:.
1543:)
1525:.
1219:!
1211::
1125::
1059:/
1027:/
998:X
831:B
626:)
620:(
615:)
611:(
601:.
469:C
134:)
128:(
123:)
119:(
109:·
102:·
95:·
88:·
61:.
38:.
20:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.