Presentation is loading. Please wait.

Presentation is loading. Please wait.

Attribute Grammars Recall the yacc program Parse a given expression

Similar presentations


Presentation on theme: "Attribute Grammars Recall the yacc program Parse a given expression"— Presentation transcript:

1 Attribute Grammars Recall the yacc program Parse a given expression
Evaluate it expr : expr '+' expr {$$ = $1 + $3;} | expr '-' expr {$$ = $1 - $3;} | expr '*' expr {$$ = $1 * $3;} | expr '/' expr {$$ = $1 / $3;} | '(' expr ')' {$$ = $2;} | NUMBER ; by Neng-Fa Zhou

2 Attributes and Attribute Grammars
variables (type,offset,first or last occurrence,...) constants (type, value, scope, ...) Attribute grammar(Syntax-directed definition) A generalization of CFG in which each grammar symbol has an associated set of attributes Semantics rules for computing attribute values by Neng-Fa Zhou

3 Synthesized Attributes
The value is computed from the values of attributes of the children S-attributed grammar - synthesized attributes only Bottom-up propagation Example values of expressions types of expressions by Neng-Fa Zhou

4 S-Attributed Grammars Example
by Neng-Fa Zhou

5 The Annotated Parse Tree
by Neng-Fa Zhou

6 Inherited Attributes Inherited Attributes Example
The value is computed from the values of attributes of the siblings and parent Top-down propagation Example type information where does a variable occurs? lhs or rhs by Neng-Fa Zhou

7 Inherited Attributes Example
by Neng-Fa Zhou

8 The Annotated Parser Tree
by Neng-Fa Zhou

9 Converting Binary to Decimal
N ::= BIN N.v = BIN.v BIN.r = 0 BIN0 ::= BIN1 B BIN1.r = BIN0.r + 1 B.r = BIN0.r BIN0.v = BIN1.v+B.v BIN ::= B BIN.v = B.v B.r = BIN.r B ::= '1' B.v = 2B.r B ::= '0' B.v = 0 by Neng-Fa Zhou

10 Dependency Graphs Each node represents an attribute of a node in the parse tree Each arc represents the dependence relationship (flow of values) by Neng-Fa Zhou

11 Computing Attribute Values
1.Compute while parsing Oblivious methods Fast (one pass) Complicated Some attribute values cannot be computed 2. Compute after parsing Parse-tree methods (sort dependency graphs) Rule-based methods (data-flow or fix-point) by Neng-Fa Zhou


Download ppt "Attribute Grammars Recall the yacc program Parse a given expression"

Similar presentations


Ads by Google