Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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