11
Lecture # 17 Syntax Directed Definition

Lecture # 17 Syntax Directed Definition. 2 Translation Schemes A translation scheme is a CF grammar embedded with semantic actions rest + term { print(“+”)

Embed Size (px)

Citation preview

Page 1: Lecture # 17 Syntax Directed Definition. 2 Translation Schemes A translation scheme is a CF grammar embedded with semantic actions rest  + term { print(“+”)

Lecture # 17

Syntax Directed Definition

Page 2: Lecture # 17 Syntax Directed Definition. 2 Translation Schemes A translation scheme is a CF grammar embedded with semantic actions rest  + term { print(“+”)

2

Translation Schemes

• A translation scheme is a CF grammar embedded with semantic actions

rest + term { print(“+”) } rest

Embeddedsemantic action

rest

term rest+ { print(“+”) }

Page 3: Lecture # 17 Syntax Directed Definition. 2 Translation Schemes A translation scheme is a CF grammar embedded with semantic actions rest  + term { print(“+”)

3

Example Translation Scheme

expr expr + termexpr expr - termexpr termterm 0term 1…term 9

{ print(“+”) }{ print(“-”) }

{ print(“0”) }{ print(“1”) }…{ print(“9”) }

Page 4: Lecture # 17 Syntax Directed Definition. 2 Translation Schemes A translation scheme is a CF grammar embedded with semantic actions rest  + term { print(“+”)

4

Example Translation Scheme (cont’d)

expr

term

9

-

5

+

2

expr

expr term

term

{ print(“-”) }

{ print(“+”) }

{ print(“9”) }

{ print(“5”) }

{ print(“2”) }

Translates 9-5+2 into postfix 95-2+

Page 5: Lecture # 17 Syntax Directed Definition. 2 Translation Schemes A translation scheme is a CF grammar embedded with semantic actions rest  + term { print(“+”)

5

Attributes

• Attribute values may represent– Numbers (literal constants)– Strings (literal constants)– Memory locations, such as a frame index of a local

variable or function argument– A data type for type checking of expressions– Scoping information for local declarations– Intermediate program representations

Page 6: Lecture # 17 Syntax Directed Definition. 2 Translation Schemes A translation scheme is a CF grammar embedded with semantic actions rest  + term { print(“+”)

6

Synthesized Versus Inherited Attributes

• Given a productionA

then each semantic rule is of the formb := f(c1,c2,…,ck)

where f is a function and ci are attributes of A and , and either– b is a synthesized attribute of A– b is an inherited attribute of one of the grammar

symbols in

Page 7: Lecture # 17 Syntax Directed Definition. 2 Translation Schemes A translation scheme is a CF grammar embedded with semantic actions rest  + term { print(“+”)

7

Synthesized Versus Inherited Attributes (cont’d)

D T LT int…L id

L.in := T.typeT.type := ‘integer’…… := L.in

Production Semantic Rule inherited

synthesized

Page 8: Lecture # 17 Syntax Directed Definition. 2 Translation Schemes A translation scheme is a CF grammar embedded with semantic actions rest  + term { print(“+”)

8

S-Attributed Definitions

• A syntax-directed definition that uses synthesized attributes exclusively is called an S-attributed definition (or S-attributed grammar)

• A parse tree of an S-attributed definition is annotated with a single bottom-up traversal

Page 9: Lecture # 17 Syntax Directed Definition. 2 Translation Schemes A translation scheme is a CF grammar embedded with semantic actions rest  + term { print(“+”)

9

Example Attribute Grammar with Synthesized+Inherited Attributes

D T LT intT realL L1 , idL id

L.in := T.typeT.type := ‘integer’T.type := ‘real’ L1.in := L.in; addtype(id.entry, L.in)addtype(id.entry, L.in)

Production Semantic Rule

Synthesized: T.type, id.entryInherited: L.in

Page 10: Lecture # 17 Syntax Directed Definition. 2 Translation Schemes A translation scheme is a CF grammar embedded with semantic actions rest  + term { print(“+”)

Example

• Write Syntax Directed Definitions to convert a binary string to decimal value

• Solution:– First we would think of synthesized and inherited

attributes required. We identified three variables namely “var” for holding binary vale, “decval” for holding decimal value and “pos” for the place value

Page 11: Lecture # 17 Syntax Directed Definition. 2 Translation Schemes A translation scheme is a CF grammar embedded with semantic actions rest  + term { print(“+”)

Example (contd)

Productions• S A S

• A 0

• A 1

• S €

Semantic Rules• S.pos = 0• S.pos=S.pos+1• S.decval= A.decval+S.decval

• A.val=0 A.pos=S.pos• A.decval= A.val *2pos

• A.val=1 A.pos=S.pos• A.decval= A.val *2pos

• S.pos =S.pos