Compiler-compiler: Difference between revisions

Content deleted Content added
Citation bot (talk | contribs)
Alter: isbn, title, template type. Add: chapter-url, chapter. Removed or converted URL. Upgrade ISBN10 to 13. | Use this bot. Report bugs. | Suggested by Abductive | #UCB_webform 3071/3824
m v2.05 - Repaired 1 link to disambiguation page - (You can help) - Object language
Line 14:
Parser generators do not handle the [[Semantics (computer science)|semantics]] of the AST, or the [[Code generation (compiler)|generation of machine code]] for the target machine.<ref name="name">"A Syntax Directed Compiler for ALGOL 60" Edgar T. Irons, Communications of the ACM Volume 4 Issue 1, Jan. 1961.</ref>
 
A '''metacompiler''' is a software development tool used mainly in the construction of [[compiler]]s, [[Translator (computing)|translators]], and [[interpreter (computing)|interpreters]] for other programming languages.<ref name="McGraw"/> The input to a metacompiler is a [[computer program]] written in a [[Domain-specific language|specialized]] programming [[metalanguage]] designed mainly for the purpose of constructing compilers.<ref name="McGraw"/><ref name="CWIC"/> The language of the compiler produced is called the object language. The minimal input producing a compiler is a [[Metaprogramming|metaprogram]] specifying the [[Metalanguage|object language]]{{dn|date=February 2023}} grammar and [[Semantics (computer science)|semantic]] transformations into an [[object program]].<ref name="CWIC"/><ref name="TMETA"/>
 
== Variants ==
Line 30:
 
===Metacompilers===
{{blockquote|Metacompilers reduce the task of writing compilers by automating the aspects that are the same regardless of the [[Metalanguage|object language]]{{dn|date=February 2023}}. This makes possible the design of [[___domain-specific language]]s which are appropriate to the specification of a particular problem. A metacompiler reduces the cost of producing [[Translator (computing)|translator]]s for such [[___domain-specific language|___domain-specific]] [[Metalanguage|object language]]{{dn|date=February 2023}}s to a point where it becomes economically feasible to include in the solution of a problem a [[___domain-specific language]] design.<ref name="CWIC"/>}}
 
As a metacompiler's [[metalanguage]] 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.<ref name="CWIC"/><ref name="bayfront"/>