1 / 11

Understanding Syntax-Directed Definitions and Translation Schemes in Computer Science

This lecture delves into syntax-directed definitions and translation schemes, pivotal constructs in compiler design. It explains how translation schemes embed semantic actions into context-free (CF) grammars, allowing for the translation of expressions into postfix notation. The discussion includes synthesized and inherited attributes, represented through semantic rules and production rules. Real-world examples illustrate how to use these principles for conversions, such as translating binary strings to decimal values. Enhance your understanding of grammar semantics and attribute manipulation in programming.

mirit
Télécharger la présentation

Understanding Syntax-Directed Definitions and Translation Schemes in Computer Science

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lecture # 17 Syntax Directed Definition

  2. Translation Schemes • A translation scheme is a CF grammar embedded with semantic actions rest +term { print(“+”) } rest Embeddedsemantic action rest + term { print(“+”) } rest

  3. Example Translation Scheme expr expr+termexpr  expr-termexpr  termterm  0term  1…term  9 { print(“+”) }{ print(“-”) }{ print(“0”) }{ print(“1”) }…{ print(“9”) }

  4. Example Translation Scheme (cont’d) expr { print(“+”) } + expr term { print(“2”) } { print(“-”) } - 2 expr term { print(“5”) } 5 term { print(“9”) } 9 Translates 9-5+2 into postfix 95-2+

  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

  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 

  7. Synthesized Versus Inherited Attributes (cont’d) inherited Production Semantic Rule D T LT  int…L  id L.in:= T.typeT.type:=‘integer’…… := L.in synthesized

  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

  9. Example Attribute Grammar with Synthesized+Inherited Attributes Production Semantic Rule L.in:= T.typeT.type:= ‘integer’T.type:= ‘real’ L1.in:= L.in; addtype(id.entry, L.in)addtype(id.entry, L.in) D T LT  intT realL  L1,idL id Synthesized: T.type, id.entryInherited: L.in

  10. 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

  11. Example (contd) Productions 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 • S A S • A 0 • A 1 • S €

More Related