CD Unit3 Part2
CD Unit3 Part2
The parse tree containing the values of attributes at each node for given input string
is called annotated or decorated parse tree.
Example:
Write the SDD using appropriate semantic rules for each production in given
grammar.
The annotated parse tree is generated and attribute values are computed in
bottom up manner.
S --> E
E --> E1 + T
E --> T
T --> T1 * F
T --> F
F --> digit
For computation of attributes we start from leftmost bottom node. The rule F –> digit
is used to reduce digit to F and the value of digit is obtained from lexical analyzer
which becomes value of F i.e. from semantic action F.val = digit.lexval. Hence, F.val
= 4 and since T is parent node of F so, we get T.val = 4 from semantic action T.val =
F.val. Then, for T –> T1 * F production, the corresponding semantic action is T.val =
T1.val * F.val . Hence, T.val = 4 * 5 = 20
Similarly, combination of E1.val + T.val becomes E.val i.e. E.val = E1.val + T.val = 26.
Then, the production S –> E is applied to reduce E.val = 26 and semantic action
associated with it prints the result E.val . Hence, the output will be 26.
2. Inherited Attributes: These are the attributes which derive their values from their
parent or sibling nodes i.e. value of inherited attributes are computed by value of
parent or sibling nodes.
Example:
The annotated parse tree is generated and attribute values are computed in
top down manner.
S --> T L
T --> int
T --> float
T --> double
L --> L1, id
L --> id
The value of L nodes is obtained from T.type (sibling) which is basically lexical value
obtained as int, float or double. Then L node gives type of identifiers a and c. The
computation of type is done in top down manner or preorder traversal. Using function
Enter_type the type of identifiers a and c is inserted in symbol table at corresponding
id.entry.
SDD