Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
lfa:2024:lab10 [2024/12/16 18:16] cata_chiru |
lfa:2024:lab10 [2024/12/16 19:34] (current) cata_chiru |
||
---|---|---|---|
Line 5: | Line 5: | ||
Write CF grammar for the following languages. For each grammar, make sure it is not ambiguous. (Start with any CF grammar that accepts L. Then write another non-ambiguous grammar for the same language). | Write CF grammar for the following languages. For each grammar, make sure it is not ambiguous. (Start with any CF grammar that accepts L. Then write another non-ambiguous grammar for the same language). | ||
- | **9.1.1.** $ L = \{\: w \in \{A,B\}^* \ | \:w \text{ is a palindrome}\} $. | + | **9.1.1.** $ L = \{\: w \in \{a,b\}^* \ | \:w \text{ is a palindrome}\} $. |
<hidden Solution 9.1.1> | <hidden Solution 9.1.1> | ||
- | abc | + | $ S \leftarrow aSa\ |\ bSb \ |\ a \ |\ b \ |\ \epsilon $ \\ |
</hidden> | </hidden> | ||
- | **9.1.2.** $ L = \{ A^{m} B^{m+n} C^{n} \ | \: n, m \geq 0 \} $ | + | **9.1.2.** $ L = \{ a^{m} b^{m+n} c^{n} \ | \: n, m \geq 0 \} $ |
+ | |||
+ | <hidden Solution 9.1.2> | ||
+ | |||
+ | $ S \leftarrow AB $ \\ | ||
+ | $ A \leftarrow aAb\ |\ \ \epsilon $ \\ | ||
+ | $ B \leftarrow bBc\ |\ \ \epsilon $ \\ | ||
+ | |||
+ | </hidden> | ||
**9.1.3.** $ L = \{w \in \{a, b\}^* | \#_a(w) = \#_b(w) \} $ | **9.1.3.** $ L = \{w \in \{a, b\}^* | \#_a(w) = \#_b(w) \} $ | ||
+ | |||
+ | <hidden Solution 9.1.3> | ||
+ | |||
+ | $ S \leftarrow aBS\ |\ bAS\ |\ \epsilon $ \\ | ||
+ | $ A \leftarrow a\ |\ bAA $ \\ | ||
+ | $ B \leftarrow b\ |\ aBB $ \\ | ||
+ | |||
+ | </hidden> | ||
+ | |||
**9.1.4.** $ L = \{w \in \{a, b\}^* | \#_a(w) \neq \#_b(w) \} $ | **9.1.4.** $ L = \{w \in \{a, b\}^* | \#_a(w) \neq \#_b(w) \} $ | ||
+ | |||
**9.1.5.** $ L = \{a^ib^jc^k | i = j \lor j = k \} $ \\ | **9.1.5.** $ L = \{a^ib^jc^k | i = j \lor j = k \} $ \\ | ||
+ | |||
+ | <hidden Solution 9.1.5> | ||
+ | |||
+ | $ S \leftarrow C\ |\ A $ \\ | ||
+ | $ C \leftarrow Cc\ |\ B $ \\ | ||
+ | $ B \leftarrow aBb\ |\ \ \epsilon $ \\ | ||
+ | $ A \leftarrow aA\ |\ D $ \\ | ||
+ | $ D \leftarrow bDc\ |\ \ \epsilon $ \\ | ||
+ | |||
+ | </hidden> | ||
+ | |||
===== 9.2. Ambiguity ===== | ===== 9.2. Ambiguity ===== | ||
Line 30: | Line 59: | ||
$ A \leftarrow aA\ |\ B $ \\ | $ A \leftarrow aA\ |\ B $ \\ | ||
$ B \leftarrow bB\ |\ \epsilon $ | $ B \leftarrow bB\ |\ \epsilon $ | ||
+ | |||
+ | <hidden Solution 9.2.1> | ||
+ | |||
+ | $ S \leftarrow A $ \\ | ||
+ | $ A \leftarrow aA\ |\ B $ \\ | ||
+ | $ B \leftarrow bB\ |\ \epsilon $ | ||
+ | |||
+ | </hidden> | ||
**9.2.2.** | **9.2.2.** | ||
Line 36: | Line 73: | ||
$ A \leftarrow 0A1\ |\ 01\ |\ B $\\ | $ A \leftarrow 0A1\ |\ 01\ |\ B $\\ | ||
$ B \leftarrow B1\ |\ \epsilon $ | $ B \leftarrow B1\ |\ \epsilon $ | ||
+ | |||
+ | <hidden Solution 9.2.2> | ||
+ | |||
+ | $ S \leftarrow AS\ |\ A $ \\ | ||
+ | $ A \leftarrow 0A1\ |\ B $\\ | ||
+ | $ B \leftarrow B1\ |\ \epsilon $ | ||
+ | |||
+ | </hidden> | ||
+ | |||
**9.2.3.** | **9.2.3.** | ||
Line 42: | Line 88: | ||
$ A \leftarrow aA\ |\ \epsilon $\\ | $ A \leftarrow aA\ |\ \epsilon $\\ | ||
$ B \leftarrow bB\ |\ \epsilon $ | $ B \leftarrow bB\ |\ \epsilon $ | ||
+ | |||
+ | <hidden Solution 9.2.3> | ||
+ | |||
+ | $ S \leftarrow aS\ |\ bS\ |\ \epsilon $ \\ | ||
+ | |||
+ | </hidden> | ||
+ | |||
+ | |||
**9.2.4.** Write an ambiguous grammar for $ L(a^*) $. | **9.2.4.** Write an ambiguous grammar for $ L(a^*) $. | ||
+ | <hidden Solution 9.2.4> | ||
+ | |||
+ | $ S \leftarrow aS \ |\ A\ |\ \epsilon $\\ | ||
+ | $ A \leftarrow aA\ |\ \epsilon $\\ | ||
+ | |||
+ | </hidden> | ||
===== 9.3 Regular Grammars ===== | ===== 9.3 Regular Grammars ===== | ||
Line 64: | Line 124: | ||
$ Y \leftarrow 1Y\ |\ 0\ |\ \epsilon $ | $ Y \leftarrow 1Y\ |\ 0\ |\ \epsilon $ | ||
+ | |||
+ | <hidden Solution 9.3.1> | ||
+ | |||
+ | Y produces $ 1^* (0 | \epsilon) $ | ||
+ | |||
+ | X produces $ 0^* 1Y \rightarrow 0^* 1^+ (0 | \epsilon) $ | ||
+ | </hidden> | ||
**9.4.1.** Prove that the languages accepted by regular grammars are exactly the regular languages | **9.4.1.** Prove that the languages accepted by regular grammars are exactly the regular languages |