Compiler Design - Computer Science and Engineering

16 downloads 174 Views 1MB Size Report
Jul 30, 2004 ... Home Page. Title Page. ◁◁. ▷▷. ◁. ▷. Page 1 of 100. Go Back. Full Screen. Close. Quit. •First •Prev •Next •Last •Go Back •Full Screen ...
Home Page

Title Page

CS432F/CSL 728:

Compiler Design July 2004

JJ

II

J

I

Page 1 of 100

S. Arun-Kumar [email protected] Department of Computer Science and Engineering I. I. T. Delhi, Hauz Khas, New Delhi 110 016.

Go Back

Full Screen

Close

July 30, 2004 Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Contents

Home Page

• first The Bigpicture last

Title Page

• first Lexical Analysis last

JJ

II

J

I

• first Syntax Analysis last – – – –

Context-free Grammars last first Ambiguity last first Shift-Reduce Parsing last first Parse Trees last first

Page 2 of 100

Go Back

• first Semantic Analysis last Full Screen

• first Synthesized Attributes last • first Inherited Attributes last

Close

Contd . . . Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

Contents . . . Contd

Title Page

JJ

II

J

I

• first Abstract Syntax Trees last • first Symbol Tables last • first Intermediate Representation last – IR: Properties – Typical Instruction Set – IR: Generation

Page 3 of 100

Go Back

Full Screen

• first Runtime Structure last Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

Title Page

JJ

II

J

I

Page 4 of 100

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

The Big Picture: 1 stream of characters SCANNER stream of tokens

Home Page

Title Page

JJ

II

J

I

Page 5 of 100

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

The Big Picture: 2 stream of characters SCANNER stream of tokens

Home Page

Title Page

JJ

II

J

I

PARSER parse tree

Page 6 of 100

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

The Big Picture: 3 stream of characters SCANNER stream of tokens

Home Page

Title Page

JJ

II

J

I

PARSER parse tree SEMANTIC ANALYZER abstract syntax tree

Page 7 of 100

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

The Big Picture: 4 stream of characters SCANNER stream of tokens

Home Page

Title Page

JJ

II

J

I

PARSER parse tree SEMANTIC ANALYZER abstract syntax tree

Page 8 of 100

I.R. CODE GENERATOR intermediate representation

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

The Big Picture: 5 stream of characters SCANNER stream of tokens

Home Page

Title Page

JJ

II

J

I

PARSER parse tree SEMANTIC ANALYZER abstract syntax tree

Page 9 of 100

I.R. CODE GENERATOR intermediate representation

Go Back

OPTIMIZER optimized intermediate representation

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

The Big Picture: 6 stream of characters SCANNER stream of tokens

Home Page

Title Page

JJ

II

J

I

PARSER parse tree SEMANTIC ANALYZER abstract syntax tree

Page 10 of 100

I.R. CODE GENERATOR intermediate representation

Go Back

OPTIMIZER optimized intermediate representation CODE GENERATOR

Full Screen

Close

target code Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

The Big Picture: 7 stream of characters SCANNER

Home Page

Title Page

stream of tokens

JJ

II

J

I

PARSER parse tree ERROR− HANDLER

SEMANTIC ANALYZER abstract syntax tree

SYMBOL TABLE

Page 11 of 100

MANAGER I.R. CODE GENERATOR intermediate representation

Go Back

OPTIMIZER optimized intermediate representation CODE GENERATOR

Full Screen

Close

target code Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

The Big Picture: 7

Home Page

Title Page

stream of characters SCANNER

JJ

II

J

I

stream of tokens PARSER parse tree ERROR− HANDLER

SEMANTIC ANALYZER abstract syntax tree

SYMBOL TABLE MANAGER

Page 12 of 100

I.R. CODE GENERATOR intermediate representation OPTIMIZER optimized intermediate representation

Go Back

CODE GENERATOR target code

Full Screen

Scanner Parser Semantic Analysis Symbol Table IR Optimization Contents

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

Title Page

JJ

II

J

I

Page 13 of 100

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

Scanning: 1

Title Page

JJ

II

J

I

• Takes a stream of characters and identifies tokens from the lexemes.

Page 14 of 100

• Eliminates comments and redundant whitepace. Go Back

• Keeps track of line numbers and column numbers and passes them as parameters to the other phases to enable error-reporting to the user.

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

Scanning: 2

Title Page

• Whitespace:

JJ

II

• Lexeme: A sequence of non-whitespace characters de-

J

I

A sequence of space, tab, newline, carriage-return, form-feed characters etc. limited by whitespace or special characters (e.g. operators like +, -, *).

Page 15 of 100

• Examples of lexemes. Go Back

– reserved words, keywords, identifiers etc. – Each comment is usually a single lexeme – preprocessor directives

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Scanning: 3

Home Page

Title Page

• Token: A sequence of characters to be treated as a single unit.

JJ

II

J

I

• Examples of tokens. Reserved words (e.g. begin, end, struct, if etc.) Keywords (integer, true etc.) Operators (+, &&, ++ etc) Identifiers (variable names, procedure names, parameter names) – Literal constants (numeric, string, character constants etc.) – Punctuation marks (:, , etc.)

– – – –

Page 16 of 100

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

Scanning: 4 • Identification of tokens is usually done by a Deterministic Finite-state automaton (DFA).

Title Page

JJ

II

J

I

• The set of tokens of a language is represented by a large regular expression.

Page 17 of 100

• This regular expression is fed to a lexical-analyser generator such as Lex, Flex or ML-Lex.

Go Back

• A giant DFA is created by the Lexical analyser generator.

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Scanning: 5 Home Page

Title Page

a−e,g−z identifier

if

f 2

3

identifier 0−9,a−z 4

h, j− a− other

chars

white space

0−9

5 0−9

1

14

JJ

II

J

I

0−9

z

i

0−9,a−z

6 real 0−9

Page 18 of 100

0−9 Go Back

8

7 int any char

(

13

9

error

error

*

10

real Full Screen

*

11 )

12 comment

Close

Quit

The Big Picture •First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Syntax Analysis

Home Page

Consider the following two languages over an alphabet A = {a, b}.

Title Page

R = {anbn|n < 100} P = {anbn|n > 0} • R may be finitely represented by a regular expression

JJ

II

J

I

(even though the actual expression is very long).

• However, P cannot actually be represented by a regular

Page 19 of 100

expression Go Back

• A regular expression is not powerful enough to represent languages which require parenthesis matching to arbitrary depths.

• All high level programming languages require an underlying language of expressions which require parentheses to be nested and matched to arbitrary depth.

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

CF-Grammars: Definition A context-free grammar (CFG) G = hN, T , P, Si consists of

• a set N of nonterminal symbols,

Home Page

Title Page

JJ

II

J

I

• a set T of terminal symbols or the alphabet, • a set P of productions or rewrite rules, • each production is of the form X −→ α, where – X ∈ N is a nonterminal and – α ∈ (N ∪ T )∗ is a string of terminals and nonterminals

• a start symbol S ∈ N .

Page 20 of 100

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

CFG: Example G = h{S}, {a, b}, P, Si, where S −→ ab and S −→ aSb are the only productions in P . Derivations look like this:

Home Page

Title Page

JJ

II

J

I

S ⇒ ab Page 21 of 100

S ⇒ aSb ⇒ aabb S ⇒ aSb ⇒ aaSbb ⇒ aaabbb

Go Back

L(G), the language generated by G is {anbn|n > 0}. Full Screen

Actually can be proved by induction on the length and structure of derivations.

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

CFG: Empty word

Home Page

G = h{S}, {a, b}, P, Si, where S −→ SS | aSb | ε generates all sequences of matching nested parentheses, including the empty word ε.

Title Page

JJ

II

J

I

A leftmost derivation might look like this:

S ⇒ SS ⇒ SSS ⇒ SS ⇒ aSbS ⇒ abS ⇒ abaSb . . . Page 22 of 100

A rightmost derivation might look like this:

S ⇒ SS ⇒ SSS ⇒ SS ⇒ SaSb ⇒ Sab ⇒ aSbab . . . Other derivations might look like God alone knows what!

S ⇒ SS ⇒ SSS ⇒ SS ⇒ . . .

Go Back

Full Screen

Close

Could be quite confusing! Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

CFG: Derivation trees 1 Derivation sequences

• put an artificial order in which productions are fired.

Title Page

JJ

II

J

I

• instead look at trees of derivations in which we may think of productions as being fired in parallel.

Page 23 of 100

• There is then no highlighting in red to determine which copy of a nonterminal was used to get the next member of the sequence.

Go Back

Full Screen

• Of course, generation of the empty word ε must be shown explicitly in the tree.

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

CFG: Derivation trees 2

Home Page

Title Page

S S

S

ε

εε

S

b

II

J

I

S

S

a

JJ

a

a

S

S

Page 24 of 100

Go Back

b

b

Derivation tree of abaabb

Full Screen

Close

ε Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

CFG: Derivation trees 3

Home Page

Title Page

S S

S

a

S

b

S

S

a

S

b

ε

a

S

b

JJ

II

J

I

Page 25 of 100

Go Back

Full Screen

ε

Another Derivation tree of

ε Close

abaabb Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

CFG: Derivation trees 4

Home Page

Title Page

S S

S

ε

S

S

a

S

b

a

S

b

JJ

II

J

I

Page 26 of 100

Go Back

a

S

b

Full Screen

ε

Yet another Derivation tree of abaabb

ε Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

Title Page

JJ

II

J

I

Page 27 of 100

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Ambiguity: 1 Home Page

E → I | C | E+E | E∗E I → y | z C → 4

Title Page

Consider the sentence y + 4 ∗ z.

E

JJ

II

J

I

E Page 28 of 100

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Ambiguity: 2 Home Page

E → I | C | E+E | E∗E I → y | z C → 4

Title Page

Consider the sentence y + 4 ∗ z.

E

JJ

II

J

I

E Page 29 of 100

E

+

E

E

*

E Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Ambiguity: 3 Home Page

E → I | C | E+E | E∗E I → y | z C → 4

Title Page

Consider the sentence y + 4 ∗ z.

E

JJ

II

J

I

E Page 30 of 100

E

E

+

* I

E

E

E

E

*

+

E

E Go Back

I Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Ambiguity: 4 Home Page

E → I | C | E+E | E∗E I → y | z C → 4

Title Page

Consider the sentence y + 4 ∗ z.

E

JJ

II

J

I

E Page 31 of 100

E

E

+

* I

E

E

E

*

+

E

E Go Back

E

I Full Screen

I y

C

I

C z

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Ambiguity: 5 Home Page

E → I | C | E+E | E∗E I → y | z C → 4

Title Page

Consider the sentence y + 4 ∗ z.

E

JJ

II

J

I

E Page 32 of 100

E

E

+

* I

E

E

E

*

+

E

E Go Back

E

I Full Screen

I y

I

C

C

z

z 4

y

Close

4 Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

Title Page

JJ

II

J

I

Page 33 of 100

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 0 Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

( E ) a



a

/

JJ

II

J

I

b Page 34 of 100

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 1 Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

( E ) −

a

/

JJ

II

J

I

b Page 35 of 100

Principle:

Go Back

Reduce whenever possible. Shift only when reduce is impossible

Full Screen

Close

a

Shift

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 2 Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

( E ) −

a

/

JJ

II

J

I

b Page 36 of 100

Go Back

Full Screen

Close

D

Reduce by r5

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 3 Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

( E ) −

a

/

JJ

II

J

I

b Page 37 of 100

Go Back

Full Screen

Close

T

Reduce by r4

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 4 Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

( E ) −

a

/

JJ

II

J

I

b Page 38 of 100

Go Back

Full Screen

Close

E

Reduce by r2

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 5 Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

a

/

b Page 39 of 100

Go Back

Full Screen

Close

− E

Shift Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 6 Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

/

b Page 40 of 100

Go Back

Full Screen

a

Shift

Close

− E

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 7 Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

/

b Page 41 of 100

Go Back

Full Screen

D

Reduce by r5

Close

− E

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 8 Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

/

b Page 42 of 100

Go Back

Full Screen

T

Reduce by r4

Close

− E

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 8a Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

/

b Page 43 of 100

Go Back

Full Screen

T − E

Reduce by r4

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 9a Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

/

b Page 44 of 100

Go Back

Full Screen

Close

E

Reduce by r1

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 10a Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

b Page 45 of 100

Go Back

Full Screen

Close

/ E

Shift Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 11a Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

Page 46 of 100

Go Back

Full Screen

b

Shift

Close

/ E

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 12a Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

Page 47 of 100

Go Back

Full Screen

D

Reduce by r5

Close

/ E

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 13a Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

Page 48 of 100

Go Back

Full Screen

T

Reduce by r4

Close

/ E

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 14a Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

Page 49 of 100

k!

Go Back

St

uc

Full Screen

E

Get back!

Reduce by r2

Close

/ E

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 14b Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

Page 50 of 100

Go Back

Full Screen

E

Get back!

Reduce by r2

Close

/ E

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 13b Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

Page 51 of 100

Go Back

Full Screen

T

Get back!

Reduce by r4

Close

/ E

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 12b Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

Page 52 of 100

Go Back

Full Screen

D

Get back!

Reduce by r5

Close

/ E

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 11b Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

Page 53 of 100

Go Back

Full Screen

Get back!

b

Shift

Close

/ E

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 10b Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

b Page 54 of 100

Go Back

Full Screen

Close

Get back!

/ E

Shift Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 9b Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

/

b Page 55 of 100

Go Back

Full Screen

Get back to where you once belonged!

Close

E

Reduce by r1

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 8b r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

fied i d o m Principle:

T

Reduce whenever possible, but but depending upon

D

Home Page

Title Page

JJ

II

J

I

lookahead |

b

|

( E )

/

b Page 56 of 100

Shift instead of reduce here!

Go Back

ce redu − t f i Sh ict confl

Full Screen

T − E

Reduce by r4

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 8 Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

/

b Page 57 of 100

Go Back

Full Screen

T

Reduce by r4

Close

− E

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 9 Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

b Page 58 of 100

Go Back

Full Screen

Shift

/ T

Close

− E

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 10 Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

Page 59 of 100

Go Back

b

Shift

Full Screen

/ T

Close

− E

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 11 Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

Page 60 of 100

Go Back

D /

Reduce by r5 Full Screen

T Close

− E

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 12 Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

Page 61 of 100

Go Back

Full Screen

T − E

Reduce by r3

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: 13 Home Page

r1. E

E −

r2 E

T

r3 T

T /

r4 T

D

r5 D

a

T Title Page

D

|

b

|

JJ

II

J

I

( E )

Page 62 of 100

Go Back

Full Screen

Close

E

Reduce by r1

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parse Trees: 0 r1. E

E −

r2 E

T

r3 T

T /

Home Page

Title Page

T r4 T r5 D

D

D a

|

b

|

( E )

JJ

II

J

I

Page 63 of 100

Go Back

Full Screen

Close

a



a

/

b Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parse Trees: 1 r1. E

E −

r2 E

T

r3 T

T /

Home Page

Title Page

T r4 T r5 D

D

D a

|

b

|

( E )

JJ

II

J

I

Page 64 of 100

Go Back

Full Screen

D Close

a



a

/

b Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parse Trees: 2 r1. E

E −

r2 E

T

r3 T

T /

Home Page

Title Page

T r4 T r5 D

D

D a

|

b

|

( E )

JJ

II

J

I

Page 65 of 100

Go Back

T Full Screen

D Close

a



a

/

b Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parse Trees: 3 r1. E

E −

r2 E

T

r3 T

T /

Home Page

Title Page

T r4 T r5 D

D

D a

|

b

|

( E )

JJ

II

J

I

Page 66 of 100

E Go Back

T Full Screen

D Close

a



a

/

b Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parse Trees: 3a r1. E

E −

r2 E

T

r3 T

T /

Home Page

Title Page

T r4 T r5 D

D

D a

|

b

|

( E )

JJ

II

J

I

Page 67 of 100

E Go Back

T Full Screen

D Close

a



a

/

b Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parse Trees: 3b r1. E

E −

r2 E

T

r3 T

T /

Home Page

Title Page

T r4 T r5 D

D

D a

|

b

|

( E )

JJ

II

J

I

Page 68 of 100

E Go Back

T Full Screen

D Close

a



a

/

b Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parse Trees: 4 r1. E

E −

r2 E

T

r3 T

T /

Home Page

Title Page

T r4 T r5 D

D

D a

|

b

|

( E )

JJ

II

J

I

Page 69 of 100

E Go Back

T Full Screen

D

D Close

a



a

/

b Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parse Trees: 5 r1. E

E −

r2 E

T

r3 T

T /

Home Page

Title Page

T r4 T r5 D

D

D a

|

b

|

( E )

JJ

II

J

I

Page 70 of 100

E Go Back

T

T

Full Screen

D

D Close

a



a

/

b Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parse Trees: 5a r1. E

E −

r2 E

T

r3 T

T /

Home Page

Title Page

T r4 T r5 D

D

D a

|

b

|

( E )

JJ

II

J

I

Page 71 of 100

E Go Back

T

T

Full Screen

D

D Close

a



a

/

b Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parse Trees: 5b r1. E

E −

r2 E

T

r3 T

T /

Home Page

Title Page

T r4 T r5 D

D

D a

|

b

|

( E )

JJ

II

J

I

Page 72 of 100

E Go Back

T

T

Full Screen

D

D Close

a



a

/

b Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parse Trees: 6 r1. E

E −

r2 E

T

r3 T

T /

Home Page

Title Page

T r4 T r5 D

D

D a

|

b

|

( E )

JJ

II

J

I

Page 73 of 100

E Go Back

T

T

Full Screen

D

D

D Close

a



a

/

b Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parse Trees: 7 r1. E

E −

r2 E

T

r3 T

T /

Home Page

Title Page

T r4 T r5 D

D

D a

|

b

|

( E )

JJ

II

J

I

Page 74 of 100

E

T Go Back

T

T

Full Screen

D

D

D Close

a



a

/

b Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parse Trees: 8 r1. E

E −

r2 E

T

r3 T

T /

Home Page

Title Page

T r4 T r5 D

D

D a

|

b

|

( E )

E

JJ

II

J

I

Page 75 of 100

E

T Go Back

T

T

Full Screen

D

D

D Close

a



a

/

b Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

Parsing: Summary: 1

Title Page

• All high-level languages are designed so that they may

JJ

II

be parsed in this fashion with only a single token lookahead.

J

I

• Parsers for a language can be automatically constructed by parger-generators such as Yacc, Bison, MLYacc.

• Shift-reduce conflicts if any, are automatically detected

Page 76 of 100

Go Back

and reported by the parser-generator.

• Shift-reduce conflicts may be avoided by suitably

Full Screen

redesigning the context-free grammar. Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Parsing: Summary: 2

Home Page

Title Page

• Very often shift-reduce conflicts may occur because of the prefix problem. In such cases many parsergenerators resolve the conflict in favour of shifting.

• There is also a possiblility of reduce-reduce conflicts. This usually happens when there is more than one nonterminal symbol to which the contents of the stack may reduce.

JJ

II

J

I

Page 77 of 100

Go Back

• A minor reworking of the grammar to avoid redundant non-terminal symbols will get rid of reduce-reduce conflicts. The Big Picture

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Semantic Analysis: 1 • Every Programming langauge can be used to program any computable function, assuming of course, it has – unbounded memory, and – unbounded time

• The parser of a programming language provides the framework within which the target code is to be generated.

• The parser also provides a structuring mechanism that divides the task of code generation into bits and pieces determined by the individual nonterminals and production rules.

• However, contex-free grammars are not powerful enough to represent all computable functions. Example, the language {an bn cn |n > 0}.

Home Page

Title Page

JJ

II

J

I

Page 78 of 100

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

Semantic Analysis: 2

Title Page

JJ

II

J

I

• There are context-sensitive aspects of a program that cannot be represented/enforced by a context-free grammar definition. Examples include – correspondence between formal and actual parameters – type consistency between declaration and use. – scope and visibility issues with respect to identifiers in a program.

Page 79 of 100

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

Title Page

JJ

II

J

I

Page 80 of 100

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Synthesized Attributes: 0

Home Page

Title Page

E

T

F

/

(

)

E

JJ

II

J

I

n T



T

F /

Page 81 of 100 n F

Go Back

(

) E

E

T

Full Screen



T

F

Close

F n

Quit n

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Synthesized Attributes: 1

Home Page

Title Page

E

T

F

/

(

)

E

JJ

II

J

I

n T



T

F /

Page 82 of 100 n F

Go Back

(

) E

E

T −

Synthesized Attributes 4

T

F

3

2

Full Screen

1

Close

F n

Quit 4

n

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Synthesized Attributes: 2

Home Page

Title Page

E

T

F

/

(

)

E

JJ

II

J

I

n T



T

F /

Page 83 of 100 n F

Go Back

(

) E

E

T −

Synthesized Attributes 4

T

4

F

3

2

Full Screen

1

Close

F n

Quit 4

n

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Synthesized Attributes: 3

Home Page

Title Page

E

T

F

/

(

)

E

JJ

II

J

I

n T



T

F /

Page 84 of 100 n F

Go Back

(

) E

E

T −

Full Screen Synthesized Attributes 4

4

4

T

F

3

2

1

Close

F n

Quit 4

n

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Synthesized Attributes: 4

Home Page

Title Page

E

T

F

/

(

)

E

JJ

II

J

I

n T



T

F /

Page 85 of 100 n F

Go Back

(

) E

4

E

T −

Synthesized Attributes 4

4

4

T

F

3

2

Full Screen

1

Close

F n

Quit 4

n

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Synthesized Attributes: 5

Home Page

Title Page

E

T

F

/

(

)

E

JJ

II

J

I

n T



T

F /

Page 86 of 100 n F

Go Back

(

) E

4

E

Full Screen

T

Synthesized Attributes



4 4

4

T

F

3

2

1

Close

F n

1

Quit 4

n

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Synthesized Attributes: 6

Home Page

Title Page

E

T

F

/

(

)

E

JJ

II

J

I

n T



T

F /

Page 87 of 100 n F

Go Back

(

) E

4

E

Full Screen

T

Synthesized Attributes



4 4

4

T

F

1

n

1

3

2

1

Close

F

Quit 4

n

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Synthesized Attributes: 7

Home Page

Title Page

E

T

F

/

(

)

E

JJ

II

J

I

n T



T

F /

Page 88 of 100 n F

Go Back

(

) E

4

E

T −

1

Synthesized Attributes 4

4

4

T

F

1

n

1

3

2

Full Screen

1

Close

F

Quit 4

n

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Synthesized Attributes: 8

Home Page

Title Page

E

T

F

/

(

)

E

JJ

II

J

I

n T



T

F /

Page 89 of 100 n F

Go Back

( E

4

E

3

)

T −

1

Full Screen Synthesized Attributes 4

4

4

T

F

1

n

1

3

2

1

Close

F

Quit 4

n

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Synthesized Attributes: 9

Home Page

Title Page

E

T

F

/

(

)

E

JJ

II

J

I

n T



T

F /

Page 90 of 100 F

Go Back

( E

4

n

3

E

3

)

T −

1

Full Screen Synthesized Attributes 4

4

4

T

F

1

n

1

3

2

1

Close

F

Quit 4

n

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Synthesized Attributes: 10

Home Page

Title Page

E

T

F

/

(

)

E

JJ

II

J

I

n T



T

3

F /

Page 91 of 100 F

Go Back

( E

4

n

3

E

3

)

T −

1

Full Screen Synthesized Attributes 4

4

4

T

F

1

n

1

3

2

1

Close

F

Quit 4

n

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Synthesized Attributes: 11

Home Page

Title Page

E

T

F

/

(

)

E

JJ

II

J

I

n T



T

3

F /

Page 92 of 100 F

2

Go Back

( E

4

n

3

E

3

)

T −

1

Synthesized Attributes 4

4

4

T

F

1

n

1

3

2

Full Screen

1

Close

F

Quit 4

n

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Synthesized Attributes: 12

Home Page

Title Page

E

T

F

/

(

)

E

JJ

II

J

I

n T



T

3

F

2

n

2

/

Page 93 of 100 F

3

Go Back

( E

4

E

3

)

T −

1

Synthesized Attributes 4

4

4

T

F

1

n

1

3

2

Full Screen

1

Close

F

Quit 4

n

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Synthesized Attributes: 13

Home Page

Title Page

E

T

F

/

(

)

E

JJ

II

J

I

n 1

T −

T

3

F

2

n

2

/

Page 94 of 100 F

3

Go Back

( E

4

E

3

)

T −

1

Full Screen Synthesized Attributes 4

4

4

T

F

1

n

1

3

2

1

Close

F

Quit 4

n

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Synthesized Attributes: 14

Home Page

Title Page

E

T

F

/

(

)

E

1

T

1

JJ

II

J

I

n



T

3

F

2

n

2

/

Page 95 of 100 F

3

Go Back

( E

4

E

3

)

T −

1

Synthesized Attributes 4

4

4

T

F

1

n

1

3

2

Full Screen

1

Close

F

Quit 4

n

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

An Attribute Grammar

Home Page

Title Page

T

E

1

T

1

E0 → E1−T B E0.val := sub(E1.val, T.val) E → T

3

F

2

3

n

2

T0 → T1/F

II

J

I

B E.val := T.val

/

F

JJ

B T0.val := div(T1.val, F.val) Page 96 of 100

( E

4

E

3

)

T −

4

4

4

T

1

F

1

n

1

T

→ F

B T.val := F.val Go Back

F

→ (E)

B F.val := E.val

F

n

F

→ n

B F.val := n.val

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Inherited Attributes: 0 C -style declarations generating int x, y, z. D → TL L → L,I | I

Home Page

T → int | float I → x | y | z D

T

Title Page

JJ

II

J

I

L

I ,

int

L

Page 97 of 100

z I L

Go Back

,

y

Full Screen

I D

L

x

y

T

z

I

int

Close

x Quit

,

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Inherited Attributes: 1 C -style declarations generating int x, y, z. D → TL L → L,I | I

Home Page

T → int | float I → x | y | z D

T

Title Page

JJ

II

J

I

L

I int

,

int

L

Page 98 of 100

z I L

Go Back

,

y

Full Screen

I D

L

x

y

T

z

I

int

Close

x Quit

,

int

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Inherited Attributes: 2 C -style declarations generating int x, y, z. D → TL L → L,I | I

Home Page

T → int | float I → x | y | z D

int

T

Title Page

JJ

II

J

I

L

I int

,

int

L

Page 99 of 100

z I L

Go Back

,

y

Full Screen

I D

L

x

y

T

z

I

int

Close

x Quit

,

int

int

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Inherited Attributes: 3 C -style declarations generating int x, y, z. D → TL L → L,I | I

Home Page

T → int | float I → x | y | z D

int

T

L

Title Page

JJ

II

J

I

int

I int

,

int

L

Page 100 of 100

z I L

Go Back

,

y

Full Screen

I D

L

x

y

T

z

I

int

Close

x Quit

,

int

int

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Inherited Attributes: 4 C -style declarations generating int x, y, z. D → TL L → L,I | I

Home Page

T → int | float I → x | y | z D

int

T

L

JJ

II

J

I

int

I int

Title Page

int

,

int

L

int

Page 101 of 100

z I L

Go Back

,

y

Full Screen

I D

L

x

y

T

z

I

int

Close

x Quit

,

int

int

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Inherited Attributes: 5

Home Page

D Title Page

int

T

L

int

I int

JJ

II

J

I

int

,

int

L

int z I

L

int

int

int Page 102 of 100

,

y

Go Back

I D

L

T

I Full Screen

x

y

z

int

x Close

,

int

int Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Inherited Attributes: 6 C -style declarations generating int x, y, z. D → TL L → L,I | I

Home Page

T → int | float I → x | y | z D

int

T

L

L

L

I

x

y

z

I

int

I

Page 103 of 100

int

int

int Go Back

,

y

T

J int

int

I

L

II

,

int

z

D

JJ int

I int

Title Page

int

Full Screen

int Close

x Quit

,

int

int

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Inherited Attributes: 7 C -style declarations generating int x, y, z. D → TL L → L,I | I

Home Page

T → int | float I → x | y | z D

int

T

L

L

L

I

x

y

z

int

int

int Go Back

,

int

Full Screen

int

I

int

I

Page 104 of 100

y

T

J int

int

I

L

II

,

int

z

D

JJ int

I int

Title Page

Close

x

int Quit

,

int

int

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

An Attribute Grammar

Home Page

Title Page

D

int

D → TL

T

L

I int

int

,

int

L

I int

I

int

T

→ int

T

→ float B T.type := float.f loat

B T.type := int.int

int z

L

B L.in := T.type

JJ

II

J

I

int

int

,

int

Page 105 of 100 y

int

L0 → L1,I

B L1 := L0.in Go Back

x

int

L → I

B I.in := L.in Full Screen

I

→ id

B id.type := I.in Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

Title Page

JJ

II

J

I

Page 106 of 100

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Abstract Syntax: 0 Home Page

E → E−T | T T → T /F | F F → n | (E)

Title Page

Suppose we want to evaluate an expression (4 − 1)/2. What we actually want is a tree that looks like this:

JJ

II

J

I

Page 107 of 100

/ Go Back

−−

2

Full Screen

Close

4

1 Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Evaluation: 0

Home Page

Title Page

JJ

II

J

I

/

Page 108 of 100

−−

2 Go Back

Full Screen

4

1 Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Evaluation: 1

Home Page

Title Page

JJ

II

J

I

/

Page 109 of 100

−−

2 Go Back

Full Screen

4

1 Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Evaluation: 2

Home Page

Title Page

JJ

II

J

I

/

Page 110 of 100

3

2 Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Evaluation: 3

Home Page

Title Page

JJ

II

J

I

/

Page 111 of 100

3

2 Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Evaluation: 4 Home Page

Title Page

1

JJ

II

J

I

Page 112 of 100

Go Back

Full Screen

Close

But what we actually get during parsing is a tree that looks like . . .

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Abstract Syntax: 1 . . . THIS!

Home Page

E

Title Page

T

T

F

JJ

II

n

J

I

/

F

Page 113 of 100

(

) E

/ E

Go Back

T −

n

−− T

Full Screen

F

n

n

Close

F n Quit

n

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Abstract Syntax: 2

Home Page

Title Page

We use attribute grammar rules to construct the abstract syntax tree (AST)!. But in order to do that we first require two procedures for tree construction. makeLeaf(literal) : Creates a node with label literal and returns a pointer to it. makeBinaryNode(opr, opd1, opd2) : Creates a node with label opr (with fields which point to opd1 and opd2) and returns a pointer to the newly created node. Now we may associate a synthesized attribute called ptr with each terminal and nonterminal symbol which points to the root of the subtree created for it.

JJ

II

J

I

Page 114 of 100

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Abstract Syntax: 3

Home Page

Title Page

E0 → E1−T B E0.ptr := makeBinaryN ode(−, E1.ptr, T.ptr) E → T T0 → T1/F

JJ

II

J

I

B E.ptr := T.ptr B T0.ptr := makeBinaryN ode(/, T1.ptr, F.ptr) Page 115 of 100

T

→ F

B T.ptr := F.ptr Go Back

F

→ (E)

B F.ptr := E.ptr Full Screen

F

→ n

B F.ptr := makeLeaf (n.val) Close

The Big Picture Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

Symbol Table:1 • The store house of context-sensitive and run-time information about every identifier in the source program.

Title Page

JJ

II

J

I

• All accesses relating to an identifier require to first find the attributes of the identifier from the symbol table

Page 116 of 100

• Usually organized as a hash table – provides fast access.

Go Back

• Compiler-generated temporaries may also be stored in the symbol table

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

Symbol Table:2

Title Page

Attributes stored in a symbol table for each identifier:

• type • size

JJ

II

J

I

• scope/visibility information Page 117 of 100

• base address • addresses to location of auxiliary symbol tables (in case

Go Back

of records, procedures, classes)

• address of the location containing the string which actually names the identifier and its length in the string pool

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

Symbol Table:3 • A symbol table exists through out the compilation and

Title Page

JJ

II

J

I

run-time.

• Major operations required of a symbol table: – insertion – search – deletions are purely logical (depending on scope and visibility) and not physical

• Keywords are often stored in the symbol table before

Page 118 of 100

Go Back

Full Screen

the compilation process begins. Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Symbol Table:4 Accesses to the symbol table at every stage of the compilation process,

Home Page

Title Page

JJ

II

J

I

Scanning: Insertion of new identifiers. Parsing: Access to the symbol table to ensure that an operand exists (declaration before use).

Page 119 of 100

Semantic analysis: • Determination of types of identifiers from declarations • type checking to ensure that operands are used in type-valid contexts. • Checking scope, visibility violations.

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

Symbol Table:5 IR generation: . Memory allocation and relativea address calculation.

Title Page

JJ

II

J

I

Optimization: All memory accesses through symbol table Target code: Translation of relative addresses to absolute addresses in terms of word length, word boundary etc.

Page 120 of 100

Go Back

The Big picture a

i.e.relative to a base address that is known only at run-time

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Intermediate Representation

Home Page

Title Page

Intermediate representations are important for reasons of portability.

JJ

II

• (more or less) independent of specific features of the

J

I

high-level language. Example. Java byte-code for any high-level language.

Page 121 of 100

• (more or less) independent of specific features of any particular target architecture (e.g. number of registers, memory size) – number of registers – memory size – word length

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

IR Properties: 1 1. It is fairly low-level containing instructions common to all target architectures and assembly languages. How low can you stoop? . . . 2. It contains some fairly high-level instructions that are common to most high-level programming languages. How high can you rise? 3. To ensure portability

• an unbounded number of variables and memory locations • no commitment to Representational Issues

Home Page

Title Page

JJ

II

J

I

Page 122 of 100

Go Back

4. To ensure type-safety Full Screen

• memory locations are also typed according to the data they may contain, • no commitment is made regarding word boundaries, and the structure of individual data items.

Close

Quit

Next •First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

IR: Representation? • No commitment to word boundaries or byte boundaries • No commitment to representation of – – – –

int vs. float, float vs. double, packed vs. unpacked, strings – where and how?.

Back to IR Properties:1

Title Page

JJ

II

J

I

Page 123 of 100

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

IR: How low can you stoop?

Title Page

JJ

II

J

I

• most arithmetic and logical operations, load and store instructions etc.

• so as to be interpreted easily, Page 124 of 100

• the interpreter is fairly small, • execution speeds are high,

Go Back

• to have fixed length instructions (where each operand position has a specific meaning). Back to IR Properties:1

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

IR: How high can you rise? • typed variables, • temporary variables instead of registers.

Home Page

Title Page

JJ

II

J

I

• array-indexing, • random access to record fields, • parameter-passing,

Page 125 of 100

Go Back

• pointers and pointer management • no limits on memory addresses Back to IR Properties:1

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

A typical instruction set: 1 Three address code: A suite of instructions. Each instruction has at most 3 operands.

• an opcode representing an operation with at most 2

Home Page

Title Page

JJ

II

J

I

operands Page 126 of 100

• two operands on which the binary operation is performed

Go Back

• a target operand, which accumulates the result of the (binary) operation.

Full Screen

If an operation requires less than 3 operands then one or more of the operands is made null.

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

A typical instruction set: 2 • Assignments (LOAD-STORE) • Jumps (conditional and unconditional)

Title Page

JJ

II

J

I

Page 127 of 100

• Procedures and parameters Go Back

• Arrays and array-indexing • Pointer Referencing and Dereferencing

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

A typical instruction set: 2

Title Page

JJ

II

J

I

• Assignments (LOAD-STORE) – x := y bop z, where bop is a binary operation – x := uop y, where uop is a unary operation – x := y, load, store, copy or register transfer

• Jumps (conditional and unconditional)

Page 128 of 100

Go Back

• Procedures and parameters Full Screen

• Arrays and array-indexing • Pointer Referencing and Dereferencing

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

A typical instruction set: 2

Title Page

JJ

II

J

I

• Assignments (LOAD-STORE) • Jumps (conditional and unconditional) – goto L – Unconditional jump, – x relop y goto L – Conditional jump, where relop is a relational operator

Page 129 of 100

Go Back

• Procedures and parameters • Arrays and array-indexing

Full Screen

• Pointer Referencing and Dereferencing

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

A typical instruction set: 2

Title Page

JJ

II

J

I

• Assignments (LOAD-STORE) • Jumps (conditional and unconditional) • Procedures and parameters Page 130 of 100

– call p n, where n is the number of parameters – return y, return value from a procedures call – param x, parameter declaration

Go Back

Full Screen

• Arrays and array-indexing • Pointer Referencing and Dereferencing

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

A typical instruction set: 2 • Assignments (LOAD-STORE)

Home Page

Title Page

JJ

II

J

I

• Jumps (conditional and unconditional) • Procedures and parameters • Arrays and array-indexing

Page 131 of 100

– x := a[i] – array indexing for r-value – a[j] := y – array indexing for l-value Note: The two opcodes are different depending on whether l-value or r-value is desired. x and y are always simple variables

Go Back

Full Screen

Close

• Pointer Referencing and Dereferencing Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

A typical instruction set: 2

Home Page

Title Page

• Assignments (LOAD-STORE) • Jumps (conditional and unconditional) • Procedures and parameters

JJ

II

J

I

• Arrays and array-indexing • Pointer Referencing and Dereferencing – x := ˆy – referencing: set x to point to y – x := *y – dereferencing: copy contents of location pointed to by y into x – *x := y – dereferencing: copy r-value of y into the location pointed to by x

Page 132 of 100

Go Back

Full Screen

Close

Picture Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Pointers y

x *x

x

x x := ^y

*y

y

@y

@z

Title Page

*y

y

x

y *x

Home Page

JJ

II

J

I

@z

*z x := *y

Page 133 of 100

*z

*z z

z

y

Go Back

y

*y

*y

x

Full Screen

x *x := y

@z

@z

z

z *z

Close

*y Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

IR: Generation

Home Page

• Can be generated by recursive traversal of the abstract syntax tree.

Title Page

• Can be generated by syntax-directed translation as follows: For every non-terminal symbol N in the grammar of the source language there exist two attributes N.place , which denotes the address of a temporary variable where the result of the execution of the generated code is stored N.code , which is the actual code segment generated.

• In addition a global counter for the instructions gener-

JJ

II

J

I

Page 134 of 100

Go Back

Full Screen

ated is maintained as part of the generation process.

• It is independent of the source language but can express target machine operations without committing to too much detail.

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

IR: Infrastructure

Home Page

Title Page

Given an abstract syntax tree T, with T also denoting its root node. T.place address of temporary variable where result of execution of the T is stored. newtemp returns a fresh variable name and also installs it in the symbol table along with relevant information T.code the actual sequence of instructions generated for the tree T. newlabel returns a label to mark an instruction in the generated code which may be the target of a jump. emit emits an instructions (regarded as a string).

JJ

II

J

I

Page 135 of 100

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

IR: Infrastructure Colour and font coding of IR code generation

Title Page

JJ

II

J

I

• Green: Nodes of the Abstract Syntax Tree • Brown: Characters and strings of the Intermediate Representation

• Red: Variables and data structures of the language in which the IR code generator is written

Page 136 of 100

Go Back

• blue: Names of relevant procedures used in IR code generation.

Full Screen

• Black: All other stuff. Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

IR: Example

Home Page

Title Page

E

→ id

B

E.place := id.place; E.code := emit()

JJ

II

J

I

Page 137 of 100

E0

→ E1 − E2

B Go Back

E0.place := newtemp; E0.code := E1.code || E2.code || emit(E0.place := E1.place − E2.place)

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

IR: Example Home Page

S

→ id := E

S.code

:= E.code || emit(id.place:=E.place)

S0

B

→ while E do S1

Title Page

JJ

II

J

I

B Page 138 of 100

S0.begin := newlabel; S0.af ter := newlabel; S0.code := emit(S0.begin:) || E.code || emit(if E.place= 0 goto S0.af ter) || S1.code || emit(gotoS0.begin) || emit(S0.af ter:)

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

IR: Example Home Page

S

→ id := E

S.code

:= E.code || emit(id.place:=E.place)

S0

B

→ while E do S1

Title Page

JJ

II

J

I

B Page 139 of 100

S0.begin := newlabel; S0.af ter := newlabel; S0.code := emit(S0.begin:) || E.code || emit(if E.place= 0 goto S0.af ter) || S1.code || emit(gotoS0.begin) || emit(S0.af ter:)

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

IR: Generation

Home Page

Title Page

While generating the intermediate representation, it is sometimes necessary to generate jumps into code that has not been generated as yet (hence the address of the label is unknown). This usually happens while processing

JJ

II

J

I

• forward jumps • short-circuit evaluation of boolean expressions It is usual in such circumstances to either fill up the empty label entries in a second pass over the the code or through a process of backpatching (which is the maintenance of lists of jumps to the same instruction number), wherein the blank entries are filled in once the sequence number of the target instruction becomes known.

Page 140 of 100

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

A Calling Chain Main program

Home Page

Title Page

Globals Procedure P2 Locals of P2

JJ

II

J

I

Procedure P21 Locals of P21 Body of P21

Call P21 Page 141 of 100

Body of P2

Call P21 Go Back

Procedure P1 Locals of P1

Full Screen

Body of P1

Call P2 Main body

Close

Call P1 Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Run-time Structure: 1

Home Page

Main program Title Page

Globals Procedure P2

JJ

II

J

I

Locals of P2 Procedure P21 Locals of P21 Page 142 of 100

Body of P21 Body of P2

Go Back

Procedure P1 Full Screen

Locals of P1 Body of P1

Close

Main body

Globals Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Run-time Structure: 2

Home Page

Main program Title Page

Globals Procedure P2

JJ

II

J

I

Locals of P2 Procedure P21 Locals of P21 Page 143 of 100

Body of P21 Body of P2 Procedure P1 Locals of P1 Body of P1

Main body

Go Back

Return address to Main Dynamic link to Main Locals of P1 Static link to Main Formal par of P1

Full Screen

Close

Globals Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Run-time Structure: 3

Home Page

Main program Title Page

Globals Procedure P2

JJ

II

J

I

Locals of P2 Procedure P21 Locals of P21

Body of P21 Body of P2 Procedure P1 Locals of P1 Body of P1

Main body

Return address to last of P1 Dynamic link to last P1 Locals of P2 Static link to last P1 Formal par P2

Go Back

Return address to Main Dynamic link to Main Locals of P1 Static link to Main Formal par of P1

Page 144 of 100

Full Screen

Close

Globals Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Run-time Structure: 4

Home Page

Main program Title Page

Globals Procedure P2 Locals of P2 Procedure P21 Locals of P21

Body of P21 Body of P2 Procedure P1 Locals of P1 Body of P1

Main body

Return address to last of P2 Dynamic link to last P2 Locals of P21 Static link last P2 Formal par P21 Return address to last of P1 Dynamic link to last P1 Locals of P2 Static link to last P1 Formal par P2

II

J

I

Page 145 of 100

Go Back

Return address to Main Dynamic link to Main Locals of P1 Static link to Main Formal par of P1

JJ

Full Screen

Close

Globals Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Run-time Structure: 5 Main program Globals

Return address to last of P21 Dynamic link to last P21 Locals of P21 Static link to last P2 Formal par P21

Procedure P2 Locals of P2 Procedure P21 Locals of P21

Body of P21 Body of P2 Procedure P1 Locals of P1 Body of P1

Main body

Return address to last of P2 Dynamic link to last P2 Locals of P21 Static link last P2 Formal par P21 Return address to last of P1 Dynamic link to last P1 Locals of P2 Static link to last P1 Formal par P2

Title Page

JJ

II

J

I

Page 146 of 100

Go Back

Return address to Main Dynamic link to Main Locals of P1 Static link to Main Formal par of P1

Home Page

Full Screen

Close

Globals Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit

Home Page

Title Page

JJ

II

J

I

Page 147 of 100

Go Back

Full Screen

Close

Quit

•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit