A compiler is a program that reads a program written in one language, the source language and translate into an equivalent program in another language that is target language.
Compiler view
Compiler view
Compilers are sometimes classified as single pass, multi pass, load-and-go, debugging or optimising, depending on how they have been constructed.
Bootstrap compiler: For bootstrapping, a compiler is characterized by 3 languages; the source language "S" that compile the target language "T" that generates code for and implementation language "I" that it is written in. We represent them using following diagram:
Phases of a compiler:
conceptually compiler operates in phases, each of which transforms the source program from one representation to another.
the first three pages from the bulk of the analysis portion of a compiler.
Lexical analysis:
in a compiler, linear analysis is called lexical analysis or scanning. For example, in lexical analysis the characters in the assignment statement
Position := initial + rate * 60
Would be grouped into the following tokens:
The identifier (position)
The assignment symbol (:=)
The identifier (initial)
The Plus sign (+)
The identifier (rate)
The multiplication sign (*)
The number (60)
The blanks separating the characters of these token would normally be eliminated during lexical analysis.
Intermediate code generation:
after syntax and semantic analysis some compiler generate an explicitly intermediate representation of the source program. This intermediate representation should have two important properties; it should be easy to produce and easy to translate into the target program.
The intermediate representation can have a variety of forms.
We consider an intermediate form called "three-address-code" which is like the assembly language for a machine in which every memory location can act like a register. Three address code consists of sequence of instructions, each of which has at most three operands. The source program might appear in three address code as:
temp 1 := int to real (60)
temp 2 := id3 * temp1
temp 3 := id2 + temp2
idl := temp 3
This intermediate form has several properties. First, each three address instruction has at most one operator in addition to the assignment. Thus, when generating these instructions, the compiler has to decide on the order in which operations are to be done; the multiplication precedes the addition in the source program. Secondly, the compiler was generated temporary name to hold the value computed by each instruction. Third, some "three address instructions" have fewer than three operands example the first and last instruction in 4.
Comments
Post a Comment
If you find something wrong about this post please let us know. No Abusive Messages please.