418 views

how many Synthesized attributes are present in the given Syntax directed Definition?

(Answer key says only 2 Synthesized attributes are present. How to find them? Any idea?)

edited | 418 views
E is reducing to F, which means E is a child and F is a parent.

what is think is F.val = digit.val is not a synthesized atthribute
Suppose production E→T. and <T.val=E.val> then what you do say ?
Then here child(T) is taking the value of parent(E) hence inherited attributes
@ManojK...but here we should check semantic rules for corresponding production na ??
yes , in semantic , values move from right to left side
@Kapil just make parse tree and check Suppose Take Ex:"(1+4)" .
then L and T will be synthesized , rt?

E also taking value from it's parent
Sorry I think each attribute is synthesized here .Since value are computed in children node.
@Arjun

Sir, plz check this .....

It has 4 synthesized attribute which are

E has the synthesized attributed  E.val and T the synthesized attribute  T.val

and F has the synthesized attribute F.val and digit has the synthesized attribute digit . lexval which is applied by the lexical analyzer .

Also , only semantic rule with side effect is  print(E.val) .

Refer ===>

http://www.csd.uwo.ca/~moreno//CS447/Lectures/Translation.html/node1.html

http://dragonbook.stanford.edu/lecture-notes/Columbia-COMS-W4115/08-03-24.html

www.cse.iitm.ac.in/~krishna/cs3300/lecture4.pdf

answered by Veteran (50.4k points) 22 90 410
selected by
is E synthesized?
yes
@srestha.

see this line from that link "the value of a synthesized attribute is computed from the values of the attributes of the children of the node."

E -> E1+T

F ->(E) , in both cases it violating that rule. rt?

@Kapil Here the logic you are applying is not valid .

See this input string “ (3+4) * (5+6)"  and parse tree.

no it is not, E1 + T will be reduced to E , so synthesized attributes work in a bottom up fashion
@manojk sir

just see the first link. it has the same question.

example 3
Ohh now you changed the answer ? I am talking about the case of F.val=digit.val ? Even all are synthesized attribute .

yes sir

i reconsidered your option of F.val=digit.val

@ srestha

it is just a side effect,

semantic rules which do printing have no effect on attributes

@srestha

For input "3*5+4n"

$6$ should be right??
I think it is 7.

As Synthesized attribute is used by parent node which takes value from its child. In given semantic rules if you see everytime when right hand side of production is reduced to  nonterminal there is some semantic action which has ti performed at everynode. Each parent is using value from its child.

Plz Correct me if i am wrong.
answered by Boss (5.1k points) 2 34 83

+1 vote