Log In
6 votes

Consider the following grammar to generate binary fractions:

If the above grammar with semantic rules calculate 


and each non-terminal has synthesized attribute ‘val’ to store its value. Then the missing semantic rules will be _______.





in Compiler Design
edited by
crop it then paste question is not clearly viewed

1 Answer

2 votes
The answer is option D.


Lets first understand the grammar .

1.It says that an binary fraction can be of the form decimal(.) followed by any number of binary bits.

2. Any binary bits can start with 0 followed by any number of binary bits or 1 followed by any number of binary bits.

3. Or it (B) can be a single bit 1 or 0.

4. Now if its 0 i.e 0.0 then the decimal value is $\frac{0}{2^{-1}}$ i.e. 0 .

5. And if its 1 i.e. 0.1 then the decimal value is $\frac{1}{2^{-1}}$  i.e. 1/2 . Therefore S3 :{B.val = 1/2 }

6. Now for S2 , its says that the 1st bit is 1 follwed by several number of binary bits.Also let those binary bits be    $b_0b_1b_2......b_n$. Therefore the given binary number becomes 1 followed by  $b_0b_1b_2......b_n$.Therefore , the decimal value is $\frac{1}{2^{-1}}+\frac{b_0}{2^{-2}}+\frac{b_1}{2^{-3}}+.......+\frac{b_n}{2^{-n}}$.

7. Now taking 1/2 common from the 2nd , 3rd........ terms we get   $\frac{1}{2^{-1}}+\frac{1}{2}\left ( \frac{b_0}{2^{-1}}+\frac{b_1}{2^{-2}}+.......+\frac{b_n}{2^{-(n-1)}} \right) $ .

8. If we look clearly , it is nothing but 1/2+B.val/2. Therefore , S2: {B0.val=B1.val/2+1/2}.

9. Similarly, we can say for S1 :{B0.val=B1.val/2}.

I hope it helps.
Thanks a lot bhai
can you please elaborate the summation function , what actually is this  $\Sigma$bi2$^{-i}$ ?

Related questions

3 votes
1 answer
Consider the following grammar and their Syntax Directed Translation (SDT) rules. (Here id represent a integer and id.val is value of that integer) S1: Given SDT is L-attributed and using L-attributed evaluation the value of the expression 4 * 6 + 3 * 7 is 84. S2: ... to the above SDT.? My doubt here: Is there any difference in the way of evaluation of L-attributed SDT and S-attributed SDT ?
asked Jan 7, 2019 in Compiler Design Shivam Kasat 646 views
2 votes
2 answers
A) SDD is L attributed. B) SDD is not L attributed because of Rule 1. C) SDD is L attributed because of Rule 2. D) SDD is L attributed because of both Rule1 and Rule2.
asked Jan 27, 2018 in Compiler Design Nymeria 236 views
1 vote
1 answer
Answer given is 0.875. I think the answer should be 0.75. I am providing the snapshot of the solution provided by MadeEasy and I think the highlighted part is given wrong. the value should be 1/2 + 1/4 + 2^3 x 0 which results into 1/2 + 1/4 = 0.75 Need your help to get the correct answer.
asked Jan 26, 2018 in Compiler Design nishitshah 111 views