awesome-java
awesome-java copied to clipboard
Rename Compiler-compiler section
Please discuss renaming the "Compiler-compiler" section to "metacompiler". A compiler is not in every case exclusive for a specific platform, while a metacompiler is. A metacompiler uses also a language, intended for this purpose; i.e. ANTLR3. Furthermore, no software listed in this section does generate compilers but only parsers as parts of compilers.
It's more accurate.
@akullpp Forgot to assign the issue. Please also take a look at the bunch of new pull request.
Can I have some other opinions on that?
The initial motivation (which still holds strong) was Wikipedia's compiler-compiler page. Metacomiler redirects to this and the article also contains metacompilers. So it appears that compiler-compiler is a more abstract term and might be better suited.
I have to correct my explaination. The given tools are parser-generators, thus they do only generate parsers which are parts of compilers. The parser does process and transform the input syntactically (to an AST), but not semantically. A compiler does also semantic analysis for being able to produce an executable output. Consequently, the enumerated tools are no full-featured compilers - simply because of the lack of a capability to interprete the AST semantically.
TLDR: Compilers generate executables from code, parsers just abstract syntax trees (ASTs). Inasmuch as those tools only generate programs capable of generating ASTs, they do not generate full compilers but parsers. So, the correct term is "parser generator", not "metacompiler" and in no circumstances "compiler-compiler".
With the following section from Wikipedia I'm not agreeing.
The most common type of compiler-compiler is more precisely called a parser generator. It only handles syntactic analysis.
It contradicts given definitions by trying to use the term of a parser as a subset of compilers.