Knowledge (XXG)

Compiler-compiler

Source đź“ť

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:)

Index

Parser generator
self-hosting compiler
source-to-source compiler

verification
improve this article
adding citations to reliable sources
"Compiler-compiler"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
computer science
parser
interpreter
compiler
programming language
syntactic analysis
grammar
Backus–Naur form
extended Backus–Naur form
syntax
Source code
abstract syntax tree
semantics
generation of machine code
compilers
translators

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

↑