Download presentation
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
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.