Line 18: | Line 18: | ||
* [[Top-Down Parsing]] - presents top-down parsing techniques; special emphasis is put on LL(1) parsers | * [[Top-Down Parsing]] - presents top-down parsing techniques; special emphasis is put on LL(1) parsers | ||
* [[Attribute Grammars]] - presents the concepts supporting the communication between syntax and semantics | * [[Attribute Grammars]] - presents the concepts supporting the communication between syntax and semantics | ||
− | * [[The YACC Parser Generator]] - presents the | + | * [[The YACC Parser Generator]] - presents the YACC parser and parser generator (byacc, bison, etc.) |
* [[Bottom-Up Parsing]] - presents bottom-up parsing, the LR family | * [[Bottom-Up Parsing]] - presents bottom-up parsing, the LR family | ||
* [[Semantic Analysis]] - presents the basic concepts behind semantic analysis: symbols, symbol tables, etc. | * [[Semantic Analysis]] - presents the basic concepts behind semantic analysis: symbols, symbol tables, etc. |
A compiler -- in general, a language processor -- is a program that takes as input a program written in the source language and translates it into another (the target language), typically (although not necessarily) one understandable by a machine.
There are various types of language processors: translators (between two high-level languages), compilers (from a high-level language to a low-level language), decompilers (from low- to high-level languages), rewriters (within the same language).
Modern compilers usually take source code and produce object code, in a form usable by other programs, such as a linker or a virtual machine. Examples:
Compiler or interpreter? Although both types of language analysis tools share some properties, they differ in how they handle the analyzed code. Compilers produce an equivalent version of the original language in a target language; interpreters translate the input language, not into a target version, but rather directly into the execution of the actions described in the source language.
The following sections cover the overall development process and contain both theoretical and practical aspects.