The Gateway to Computer Science Excellence

+16 votes

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

- $2 + a - b$
- $2 + a - b * a + b$
- $2 + ((a - b) * (a + b)))$
- $2 + (a - b) * (a + b)$

The parse tree corresponds to

- Expression (i)
- Expression (ii)
- Expression (iv) only
- Expression (ii), (iii), and (iv)
- Expression (iii) and (iv) only

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.

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.

+13 votes

Best answer

+4

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

+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.

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.

+5 votes

Although given answer is correct one can approach in another way if one wants more visualization to this problem

Write the "postfix" expression of given parse tree keeping in mind precedences order & associativity as per question we will get { 2ab-ab+*+ }

Now write the postfix expressions of options 3 & 4 you will see same and for option 2 you will get different

(E) correct answer

Write the "postfix" expression of given parse tree keeping in mind precedences order & associativity as per question we will get { 2ab-ab+*+ }

Now write the postfix expressions of options 3 & 4 you will see same and for option 2 you will get different

(E) correct answer

52,215 questions

59,981 answers

201,180 comments

94,633 users