728 views

Consider the parse tree Assume that $*$ has higher precedence than $+$, $-$ and operators associate right to left (i.e $(a + b + c= (a + (b + c)))$. Consider

1. $2 + a - b$
2. $2 + a - b * a + b$
3. $2 + ((a - b) * (a + b)))$
4. $2 + (a - b) * (a + b)$

The parse tree corresponds to

1. Expression (i)
2. Expression (ii)
3. Expression (iv) only
4. Expression (ii), (iii), and (iv)
5. Expression (iii) and (iv) only

edited | 728 views
+1
there is one  brace extra in option(iii) at end
0
It took a bit time for me to understand why (E) is the correct option.

Though * has higher precedence than + and -, but brackets always have the highest precedence.

In the given parse tree, (a-b) and (a+b) are evaluated first, then multiplied and added with 2 at last, and the same happening in option iii and iv.
+1

@srestha Ma'am

I don't know whether they expect "most appropriate" answer or not but I think there is no need of choice 3 if choice 4 is sufficient. as "*" has highest precedence then anyhow it wont perform "+" over "*" so no need of parentheses there. Please explain.

+2

"*" has highest precedence then anyhow it wont perform "+" over "*"

that is true, that is why option iv is true

but iii also correct

if both are correct, we need to say both correct. We cannot eliminate one without any reason

+1
There is an extra closing bracket in option iii ?

e is correct

Because as the expression evaluated right to left , so in (ii). $2+(a-(b*(a+b)))$ this evaluation performed, which is not a correct evaluation as the parse tree

by Veteran
edited by
+4

Firstly b*a shud perform first becz * has Higher precedence in 2nd part..However it doesn't affect the Final Answer..

0
Can you elloborate a bit ?
+3
for option (ii)

2+a−(b∗a)+b // * has high precedency

now +,- have same precedency so we will apply right to left associativity

(2+(a−((b∗a)+b))) is the result of option B.
0
I agree with Rajesh. b*a will be evaluated first.
0
As given in the question that '*' has higher priority but in the parse tree shown '*' is defined at a level above  '-'. Though the parse tree corresponds to iii) and iv), isn't the priority given wrong here?
0
$\mathbf *$ should come first that isn't necessary if parenthesis are being used.