Grammars
Writing Grammars
1. Write grammars for the following languages:
1.1. $ L = \{a^{m}b^{m + n}c^{n} | n, m \geq 0 \} $
1.2. $ L = \{a^ib^jc^k | i = j \lor j = k \} $
1.3. $ L = \{w \in \{a, b\}^* | \#_a(w) \neq \#_b(w) \} $
Ambiguity
2. Which of the following grammars are ambiguous? Justify each answer. Modify the grammar to remove ambiguity, wherever the case.
2.1.
$ S \leftarrow aA | A $
$ A \leftarrow aA | B $
$ B \leftarrow bB | \epsilon $
2.2.
$ S \leftarrow AS | \epsilon $
$ A \leftarrow 0A1 | 01 | B $
$ B \leftarrow B1 | \epsilon $
2.3.
$ S \leftarrow ASB | BSA | \epsilon $
$ A \leftarrow aA | \epsilon $
$ B \leftarrow bB | \epsilon $
3. Write an ambiguous grammar for $ L(a^*) $.
Regular Grammars
4. Is the language described by the following grammar regular? If so, write a regular expression for it.
$ S \leftarrow aA $
$ A \leftarrow aA | B $
$ B \leftarrow Bb | \epsilon $
5. Write a regular expression for the language described by:
$ S \leftarrow aX $
$ X \leftarrow bY | S $
$ Y \leftarrow aX | bS | \epsilon $
6. Write a regular grammar for $ L((0 \cup 1^*)^*01^*) $.
Chomsky Normal Form
7. Remove “$ \epsilon \text{-rules} $” from the following grammar:
$ A \leftarrow \epsilon | B $
$ B \leftarrow b $
$ B \leftarrow ABC | BAC $
$ C \leftarrow AC | c$
8. Remove the “unit rules” from the previous grammar, after “$ \epsilon \text{-rules} $” have been removed.
9. Apply the CNF conversion rules to the solution for 1.1. Does the accepted language stay the same?