Compiler Designs and Constructions: Chapter 9: Translation Objectives

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 23

Compiler Designs and

Constructions
Chapter 9: Translation
Objectives:
Translation
Method
Three Address Code

Dr. Mohsen Chitsaz

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:

A.a:= F(X.x, Y.y, Z.z) for production


A ---> XYZ

State Value <--- Top


X X.x After
Parse
Y Y.y ===>
A A.a
Z Z.z Value of Symbol Table
Pointer to a State in LR(1) Parse
Table
Chapter 9: Translation 3
 Example:

Production Semantic Values (Code)


L ---> E$ Print (Val[Top])
E ---> E + T Val[nTop]:= Val[Top – 2] + Val[Top]
E ---> T
T ---> T * F Val[nTop]:= Val[Top – 2] * Val[Top]
T ---> F
F ---> (E) Val[nTop]:=Val[Top – 1]
F ---> digit

Chapter 9: Translation 4
Cont.
 Using LR Parser: Parse 3 * 5 + 4 $

T.Val <--- Top


+ Top – 1
Top - 2 E.Val <--- nTop
= E.Val

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)

Record structure with 4 fields


Arg1, Arg3, op, Result

Example: a:= -b+c*d

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

 This is a Two Address Instruction


 Most Assembly Languages are made up of
Triples

Chapter 9: Translation 21
3. Indirect Tuples:
We use pointers to Triples
Example: a:= -b + c * d

Triple Address op Arg1 Arg2


0 14  14 U_Minus b
1 15  15 * c d
2 16  16 + (14) (15)
3 17  17 := (15) a

Chapter 9: Translation 22
Indirect Tuples:

 Save Space: Why?


 Not good for optimizing code: Why?

 Not good for memory assignment prior


to code generation

Chapter 9: Translation 23

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy