Compiler Designs and Constructions: Chapter 9: Translation Objectives
Compiler Designs and Constructions: Chapter 9: Translation Objectives
Compiler Designs and Constructions: Chapter 9: Translation Objectives
Constructions
Chapter 9: Translation
Objectives:
Translation
Method
Three Address Code
Chapter 9: Translation 1
Bottom-up evaluation of S-attributed:
Definitions:
Syntax-directed definition with only
synthesized attributes is called S-attributed
Use LR Parser
Implementation:
Stack to hold info about subtrees that have
been parsed
Chapter 9: Translation 2
Example:
Chapter 9: Translation 4
Cont.
Using LR Parser: Parse 3 * 5 + 4 $
Chapter 9: Translation 5
Input Stack Attribute Production Used
3*5+4$ - -
*5+4$ 3 3
*5+4$ F 3 F ---> digit
*5+4$ T 3 T ---> F
5+4$ T* 3
+4$ T*5 3 * 5
+4$ T*F 3 *5 F - digit
+4$ T 15 T ---> T * F
+4$ E 15 E ---> T
4$ E+ 15
$ E+4 15 + 4
$ E+F 15 + 4 F ---> digit
$ E+T 15 4 T ---> F
$ E 19 E ---> E + T
E 19
L 19 L ---> E $
Chapter 9: Translation 6
Parse 3 * 5 + 4 $
L
E $
Show Stack
E + T
T F
T * F
F 4
5
3 Chapter 9: Translation 7
Intermediate Code Generation:
Type of intermediate code generation:
1. Graphical Representation
a := b * c + b * c
Syntax Tree
:=
+
a
* *
b c b c
Chapter 9: Translation 8
Dag
:=
a +
b c
Chapter 9: Translation 9
Advantages?
Disadvantages?
Chapter 9: Translation 10
Representation of Syntax Tree:
a-
:=
id a +
* * <--- b * c
id b id c id b id c
Chapter 9: Translation 11
b. Using array
0 id b
1 id c
2 * 0 1 b*c
3 id b
4 id c
5 * 3 4 b*c
6 + 2 5
7 id a
8 := 7 6
Chapter 9: Translation 12
2. Postfix notation
( a:= ((b * c) + (b * c)))
a b c * b c * + :=
Advantages/Disadvantages?
- No need for ()
- No need for Temp
- Use Run-Time Stack
- Easy to reconstruct Parse Tree
Chapter 9: Translation 13
Three Address Code:
3. Three address Code:
General Form
X := A op B
X, A, B are Const, Name, or Temp
Example:
a := b * c + d
T0 := b * c
T1 := T0 + d
a := T1
Chapter 9: Translation 14
Three Address Code:
Advantages?
Disadvantages?
Chapter 9: Translation 15
Three Address Code:
Assignment
Operand:= Operand1 op Operand2
Unary Operation
Operand:= Op Operand1
Copy Statement
Operand:= Operand1
Procedure/Function Call
Parm A,B
Call P,n
Chapter 9: Translation 16
Three Address Code
Indexed Assignment
Operand[I]:= B
Pointer
A:= Address B
Unconditional Jump
GOTO L
Conditional Jump
If A RelOp B GOTO L
Chapter 9: Translation 17
Types of Three Address Codes:
1. Quadruples (Quad/Three Address Code)
Chapter 9: Translation 18
Quadruples:
op Arg1 Arg2 Result
0 U_Minus b T1
1 * c d T2
2 + T1 T2 T3
3 := T3 a
4
Code: U_Minus b T1
Mul c d T2
Add T1 T2 T3
Assign T3 a
Chapter 9: Translation 19
Types of Three Address Codes:
2. Triples: (3 – Tuples/Triplest)
Record with 3 fields
Arg1, Arg2, op
Example: a := -b + c * d
op Arg1 Arg2
(0) U_Minus b
(1) * c d
(2) + (0) (1)
(3) := (2) a
Chapter 9: Translation 20
Triples:
Arg1, Arg2 are either a pointer to Symbol
Table (Name, Constant) or a pointer to
Triple Structure
Chapter 9: Translation 21
3. Indirect Tuples:
We use pointers to Triples
Example: a:= -b + c * d
Chapter 9: Translation 22
Indirect Tuples:
Chapter 9: Translation 23