5. syntax-directed translation
DESCRIPTION
5. Syntax-Directed Translation. Zhang Zhizheng [email protected]. L E n EE+T|T TT*F|F Fdigital Analyze “3*5+4 n ”. digital*digital+digital n. Scanner. F. digit. F. digit. digit. L. n. E. E + T. T. T + F. F.val=4. - PowerPoint PPT PresentationTRANSCRIPT
![Page 2: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/2.jpg)
LEn
EE+T|T
TT*F|F
Fdigital
Analyze “3*5+4n”
![Page 3: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/3.jpg)
digital*digital+digitaln
Scanner
![Page 4: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/4.jpg)
L
E
E + T
F
F
n
T + F digit
digit
digit
T
![Page 5: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/5.jpg)
L
E.val=19
E.val=15 + T.val=4
F.val=3
F.val=4
n
T.val=3 * F.val=5 digit.lexval=4
digit.lexval =3
digit.lexval =5
T.val=15
![Page 6: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/6.jpg)
19En
15 - 4E+En
15 --E+dign
15 -E+dign
15E+dign
3 - 5E*E+dign
3 --E*dig+dign
3 -E*dig+dign
-dig*dig+dign
dig*dig+dign
ValueSYMInput
![Page 7: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/7.jpg)
5.0 Approaches to implement Syntax-Directed Translation
1 、 Basic ideaFirst: Guided by context-free grammar (Translating when parsing )
Third: Attaching attributes to the grammar symbols representing the program construction.
Second: Values for attributes are computed by “semantic rules ”associated with the grammar productions.
![Page 8: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/8.jpg)
Read the beginning three sections of 5.1 in 10 minutes
What is a syntax-directed definition?
The role of semantic rules
Dependency graph
Side effects of semantic rules
annotated parse tree
![Page 9: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/9.jpg)
2 、 Two notations for associating semantic rules with productions– Syntax-directed definitions
•High-level specifications for translations
•Hide implementation details•No need to specify explicitly the or
der in which translation take placeE.g, EE1+E2 {E.val=E1.val+E2.val}
![Page 10: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/10.jpg)
• E E1*E2 {E.val=E1.valE2.val}
• E (E1) {E•VAL= E2•VAL }
• E digital{E•VAL= digital•LEXVAL }
![Page 11: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/11.jpg)
– Translation schemes •Indicate the order in which sema
ntic rules are to be evaluated.•Allow some implementation detai
ls to be shown
E.g, S{B.ps=10}B{S.ht=B.ht}
![Page 12: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/12.jpg)
3 、 Conceptual view of syntax-directed translation
Inputstring
Parsetree
Dependencygraph
Evaluation orderfor semantic rules
![Page 13: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/13.jpg)
Notes: 1)Evaluation of the semantic rules may
generate code, save information in a symbol table , issue error messages, or perform any other activities.
2) Special cases of syntax-directed definitions can be implemented in a single pass by evaluating semantic rules during parsing, without explicitly constructing a parse tree or a graph showing dependencies between attributes.
![Page 14: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/14.jpg)
5. 1 Syntax-Directed Definitions
1 、 Definitions1)Syntax-directed definition
•A generalization of a context-free grammar in which each grammar symbol has an associated set of attributes
![Page 15: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/15.jpg)
2)Attribute•Represent anything we choose: a string, a number, a type, a memory location, etc.
Notes: The value of an attribute at a parse-tree node is defined by a semantic rule associated with the production used at that node.
![Page 16: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/16.jpg)
3)Types of Attribute•Synthesized attribute
– The value of a synthesized attribute at a node is computed from the values of attributes at the children of that node in the parse tree
![Page 17: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/17.jpg)
L
E.val=19
E.val=15 + T.val=4
F.val=3
F.val=4
n
T.val=3 * F.val=5 digit.lexval=4
digit.lexval =3
digit.lexval =5
T.val=15
E.g, EE1+T2 {E.val=E1.val+T2.val}
![Page 18: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/18.jpg)
•Inherited attribute– The value of an inherited attribute is comput
ed from the values of attributes at the siblings and parent of that node.
![Page 19: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/19.jpg)
L id
L.in:=L1.in; addtype(id.entry, L.in)
addtype(id.entry, L.in)L L1, id
T.type:=realT real
T.type:=integerT int
L.in:=T.typeDT L
Semantic RuleProduction
![Page 20: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/20.jpg)
E.g, real a, b, c; T id, id, id# D
T.type=real
real
id
L.in=real
L.in=real
L.in=real
id
id,
,
![Page 21: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/21.jpg)
4)Dependency graph•A graph that represents dependencies
between attributes set up by the semantic rules
Notes: (1)From the dependency graph,we can
derive an evaluation order for the semantic rules
(2)Evaluation of the semantic rules defines the values of the attributes at the nodes in the parse tree
(3)Semantic rule may have side effects
![Page 22: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/22.jpg)
5)Annotated parse tree •A parse tree showing the values of attributes at each node
Notes: The process of computing the attribute values at the nodes is called annotating or decorating the parse tree.
![Page 23: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/23.jpg)
2 、 Form of a Syntax-Directed Definition Each grammar production A has
associated with it a set of semantic rules of the form b=f(c1,c2,….,ck), f is a function,
1) b is a synthesized attribute of A c1, c2,….,ck are attributes belonging t
o the grammar symbols of the production
![Page 24: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/24.jpg)
2) b is an inherited attribute of one of the grammar symbols on the right side of the production c1, c2,….,ck are attributes
belonging to the grammar symbols of the production
Notes: In either case, we say that attribute
b depends on attributes c1, c2,….,ck
![Page 25: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/25.jpg)
3 、 Attribute grammar A syntax-directed definition in which th
e functions in semantic rules cannot have side effects.
![Page 26: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/26.jpg)
Notes: (1)Functions in semantic rules will often be written as expressions.(2) Occasionally, semantic rules are written as procedure calls or program fragments (in the time, we name the attribute of non-terminal as a dummy attribute)(3)Values for attributes of terminals are usually supplied by the lexical analyzer
![Page 27: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/27.jpg)
• E.g.
Production Semantic rules
A E n
(n for new-line)
Print(E.val)
(A has a dummy attribute)
E E (1)*E(2) E.val= E(1).val* E(2).val
E E (1) + E(2) E.val= E(1).val+E(2).val
E (E (1)) E.val= E(1).val
E digit E.val=digit.lexval
![Page 28: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/28.jpg)
4 、 Synthesized Attributes1) S-attributed definition A syntax-directed definition that us
es synthesized attributes exclusively
![Page 29: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/29.jpg)
2)Annotation for a parse tree for an S-attributed definition
By evaluating the semantic rules for the attributes at each node bottom up, from the leaves to the root.
![Page 30: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/30.jpg)
E.g. Annotated parse tree for 3*5+4 n
L
E.val=19
E.val=15 + T.val=4
F.val=3
F.val=4
n
T.val=3 + F.val=5 digit.lexval=4
digit.lexval =3
digit.lexval =5
T.val=15
![Page 31: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/31.jpg)
![Page 32: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/32.jpg)
![Page 33: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/33.jpg)
5 、 Inherited Attributes Although it is always possible to rewr
ite a syntax-directed definition to use only synthesized attributes, it is often natural to use syntax-directed definition with inherited attributes.
![Page 34: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/34.jpg)
• E.g. Syntax-directed definition with inherited attribute L.in
Production Semantic rules
D T L L.in=T.type
T int T.type= integer
T real T.type=real
L L (1),id L (1).in=L.in
addtype(id.entry, L.in)
L id addtype(id.entry, L.in)
![Page 35: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/35.jpg)
D
T.type=real L.in=real
real L.in=real , id3
L.in=real , id2
id1
E.g. Parse tree with inherited attribute in at each node labeled L. (real id1,id2,id3)
![Page 36: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/36.jpg)
![Page 37: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/37.jpg)
6 、 Dependency graphs 1)Definition
A directed graph that describes the inter-dependencies among the inherited and synthesized attributes at the nodes in a parse tree
2)Constructing a dependency graph for a given parse tree
![Page 38: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/38.jpg)
for each node n in the parse tree do
for each attribute a of the grammar symbol at n do
construct a node in the dependency graph for a;
for each node n in the parse tree do
for each semantic rule b=f(c1,c2,……,ck)
associated with the production used at n do
for (i=1, i<=k ,i++)
construct an edge from the node for ci to the node for b;
![Page 39: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/39.jpg)
2) Constructing a dependency graph for a given parse tree
• E.g. when the following production is used in a parse tree, construct the dependency graph.
Production Semantic rules
E E (1) + E(2) E.val= E(1).val+E(2).val
![Page 40: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/40.jpg)
• The three nodes of the dependency graph marked by • represent the synthesized attributes E.val, E(1).val, and E(2).val at the corresponding nodes in the parse tree.
• The dotted lines represent the parse tree and are not part of the dependency graph.
E
E(1) + E(2)
•val
Val val
![Page 41: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/41.jpg)
![Page 42: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/42.jpg)
7 、 Evaluation order 1) Basic idea In the topological sort of a DAG(Directed Acyclic Graph)
![Page 43: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/43.jpg)
2)Topological sort of a DAG
Any ordering m1,m2,…,mk of the nodes of the graph such that edges go from nodes earlier in the ordering to later nodes.
Notes: From a topological sort of a dependency
graph, we obtain an evaluation order for the semantic rules.
![Page 44: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/44.jpg)
D
T type 4 in 5 L 6
real in 7 L 8 , id3 3 entry
In 9 L 10 , id2 2 entry
id1 1 entry
3)An example
![Page 45: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/45.jpg)
• From this topological sort, we obtain the following program.(ai for the attribute associated with the node numbered i in the dependency graph.)– a4=real;– a5=a4;– Addtype (id3.entry, a5);– a7=a5;– Addtype (id2.entry, a7);– a9=a7;– Addtype (id1.entry, a9);
![Page 46: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/46.jpg)
![Page 47: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/47.jpg)
![Page 48: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/48.jpg)
4)Methods for evaluating semantic rules
(1)Parse-tree methods Obtain an evaluation order from a topological sort of the dependency graph constructed from the parse tree for each input.
Notes: It will fail if the dependency graph for the particular parse tree has a cycle.
![Page 49: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/49.jpg)
(2)Rule-based methodsAt compiler-construction time, the semantic rules associated with productions are analyzed.
Notes: For each production, the order is predetermined .
![Page 50: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/50.jpg)
(3)Oblivious methodsAn evaluation order is chosen without considering the semantic rules.
Note. Its order restricts the class of syntax-directed definitions that can be implemented.
![Page 51: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/51.jpg)
Notes: Rule-based and oblivious methods
need not explicitly construct the dependency graph at compiler time, so they can be more efficient in their use of compiler time and space
![Page 52: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/52.jpg)
5. 2 Bottom-up evaluation of the S-attributed definitions
1 、 Basic idea– Evaluated by a bottom-up parser
as the input is being parsed.
– The parser keeps the values of the synthesized attributes associated with the grammar symbols on its stack.
![Page 53: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/53.jpg)
– When a reduction is made, the values of the new synthesized attributes are computed from the attributes appearing on the stack for the grammar symbols on the right side of the reducing production.
![Page 54: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/54.jpg)
Notes: 1)A translator for an S-attributed definition
can often be implemented with an LR-parser
2)The stack is used to hold information about sub-trees that have been parsed.
3)We can use extra fields in the parser stack to hold the values of synthesized attributes
![Page 55: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/55.jpg)
E.g.
State Val
… …
X X.val
Y Y.val
… …
![Page 56: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/56.jpg)
2 、 Evaluating the Synthesized attributes
Production Code fragment
L E# Print(val[top])
E E (1) + T Val[ntop]= val[top-2]+val[top]
E T
TT (1)*F Val[ntop]= val[top-2]*val[top]
T F
F(E) Val[ntop]= val[top-1]
F digit
![Page 57: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/57.jpg)
Moves made by translator on 3*5+4# State stack Symbol stack Val input action 0 # - 3*5+4# Shift 05 #i 3 *5+4# Reduce by 6 03 #F 3 *5+4# Reduce by 4 02 #T 3 *5+4# Shift 027 #T* 3- 5+4# Shift 0275 #T*i 3-5 +4# Reduce by 6 02710 #T*F 3-5 +4# Reduce by 3 02 #T 15 +4# Reduce by 2 01 #E 15 +4# Shift 016 #E+ 15- 4# Shift 0165 #E+i 15-4 # Reduce by 6 0163 #E+F 15-4 # Reduce by 4 0169 #E+T 15-4 # Reduce by 1 01 #E 19 # Accept
![Page 58: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/58.jpg)
Exercises
• Please construct an annotated parse tree for the input string 4*5+6 where the syntax-directed definition is as following:
Productions Semantic Rules
EE1*T E.val=E1.val*T.val
ET E.val=T.val
TT1+F T.val=T1.val+F.val
TF T.val=F.val
Fi F.val=i.lexval
![Page 59: 5. Syntax-Directed Translation](https://reader033.vdocument.in/reader033/viewer/2022051001/56814af8550346895db80703/html5/thumbnails/59.jpg)
• Please construct an annotated parse tree for the input string 4+(5*6+9)*7 where the syntax-directed definition is as following :
Productions Semantic RulesEE1*T E.val=E1.val*T.valET E.val=T.valTT1+F T.val=T1.val+F.valTF T.val=F.valF(E) F.val=E.valFi F.val=i.lexval