The compiler, German Compiler, is a discipline of computer science. It deals with the design and programming of compilers that translate a source code ( a mostly penned in a higher programming language, ie, a source) to a destination code (usually a less expressive language, primarily machine language ).
For the compilers are software tools (for example, parser generators ) are available which generate parts of a compiler such as lexical scanner or parser specifications (often incorrectly referred to as compiler - compilers or compiler generation). These include:
- Lex - a scanner generator; Open -source alternative: Flex
- Yacc - Yet Another Compiler Compiler, a parser generator; Open Source Alternative: GNU Bison
- GOLD Parsing System - parser generator for C, C , NET, Java, D, Delphi, Visual Basic, Python..
- JavaCC - Java Compiler Compiler, a CC implemented in Java with many possibilities, combining inter alia scanner and parser.
- Coco / R - scanner and parser generator for C #, Java, C , Oberon, Delphi, Ada, Ruby, Unicon. Is available under a GPL extended.
- ANTLR - Another Tool for Language Recognition - parser generator for C, C #, C , Objective C, Java, Python, Ruby, Lisp, Perl, PHP, Oberon, Ada95
- AtoCC - Visual scanner and parser generator for academic purposes (C #, Java, Delphi and Scheme).
Real Compiler generation, ie the automatic generation of a complete compiler from a formal specification, is still research area, such as at the University of the Bundeswehr, the projects Jaccie and SIC.