Path: csiph.com!weretis.net!feeder6.news.weretis.net!news.misty.com!news.iecc.com!.POSTED.news.iecc.com!nerds-end From: Thomas Koenig Newsgroups: comp.compilers Subject: Re: Are there "compiler generators"? Date: Sun, 29 May 2022 09:14:51 -0000 (UTC) Organization: news.netcologne.de Lines: 46 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <22-05-058@comp.compilers> References: <22-05-054@comp.compilers> Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="54101"; mail-complaints-to="abuse@iecc.com" Keywords: tools Posted-Date: 29 May 2022 18:16:02 EDT X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: csiph.com comp.compilers:3030 Roger L Costello schrieb: > Is it still true in 2022--there are no compiler > generators? Consider what a compiler does can be roughly subdivided into the follwing tasks: a) Lexing, resulting in a stream of tokens b) Parsing, resulting in an abstract syntax tree c) Conversion into intermediate form, resulting in SSA (usually, these days) d) Optimization of the SSA, resulting in modified SSA e) Conversion into machine language, resulting in some internl representation of the machine language f) Optimization of the machine language g) Output to later stages (in assembler or in intermediate form) Roughly speaking a)-c) is the front end, d) is the middle end and e)-f) is the back end. As our moderator writes, > [There are certainly programs that will generate a combined lexer and parser > but there's a lot more to a compiler. -John] a) and b) are well covered. For c), you would need a machine- implementable description of the language semantics, and there is no such thing in widespread use. d) is a main component of today's compilers, which is hand-crafted code. e)-g) can be covered by machine descriptions, that gcc and LLVM have (it is debatable if these can be called generators). So, assuming you can use gcc or LLVM, the main gap is c) - you would need a formal semantic description, and it would have to be written in a way that it can be translated automatically. That might be doable if you design your own langue with that goal. Defining a format for language semantics which is useful for a reasonable subset of the multitude of languages in current use and machine-translatable (a input to a "semantic front end generator", if you will) will be _extremely_ hard. Maybe starting with the formal definition of Modula-2 and then thinking in two directions, how could a semantic front end generator be built from that description and and how could that format be extended to cover other languages, could be the start of an approach.