Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
lfa:2022:lab11-cfl_3 [2022/12/18 21:36] alexandra.udrescu01 |
lfa:2022:lab11-cfl_3 [2022/12/18 23:26] (current) mihai.udubasa add some notes to 11.4.2 |
||
|---|---|---|---|
| Line 45: | Line 45: | ||
| </hidden> | </hidden> | ||
| * {{:lfa:2022:lfa2022_lab6_mindfa2_1.png?200|}} | * {{:lfa:2022:lfa2022_lab6_mindfa2_1.png?200|}} | ||
| - | <hidden><note tip> $ S_1 \leftarrow 1S_2 | 0S_1 | \epsilon \\ S_2 \leftarrow 0S_1 | 1S_3 | \epsilon \\ S_3 \leftarrow 0S_3 | 1S_3$ </note></hidden | + | <hidden><note tip> $ S_1 \leftarrow 1S_2 | 0S_1 | \epsilon \\ S_2 \leftarrow 0S_1 | 1S_3 | \epsilon \\ S_3 \leftarrow 0S_3 | 1S_3$ </note></hidden> |
| - | > | + | |
| ===== 11.4. Short Exercises ===== | ===== 11.4. Short Exercises ===== | ||
| Line 54: | Line 53: | ||
| Create a graph $math[G=(V,E)] where the nodes are **terminals and non-terminals**. For each rule of the form $math[X \leftarrow aY] create a directed edge $math[(X,Y)]. For each rule $math[X \leftarrow a], also generate an edge $math[(X,a)]. | Create a graph $math[G=(V,E)] where the nodes are **terminals and non-terminals**. For each rule of the form $math[X \leftarrow aY] create a directed edge $math[(X,Y)]. For each rule $math[X \leftarrow a], also generate an edge $math[(X,a)]. | ||
| - First, we need to check first if the grammar generates a language different from $math[\emptyset]. So we check if there is a path from the start symbol to some terminal. | - First, we need to check first if the grammar generates a language different from $math[\emptyset]. So we check if there is a path from the start symbol to some terminal. | ||
| - | - Second, we need to check if there are //loops//. It suffices to check if the graph is a tree. | + | - Second, we need to check if there are //loops//. It suffices to check if the graph is a tree. MU: the condition is not sufficient as a grammar could generate a finite language while also having looping rules (if the grammar comes from the dfa transformation, these would be from the sink states of the dfa; see state 3 of the second dfa from 11.3.1) |
| </hidden> | </hidden> | ||
| **11.4.3.** Prove that any DFA can be converted to a regular grammar. | **11.4.3.** Prove that any DFA can be converted to a regular grammar. | ||
| - | <hidden> See lecture</hidden> | + | <hidden> See lecture </hidden> |
| **11.4.4.** Is there a decidable algorithm to remove ambiguity from regular grammars? | **11.4.4.** Is there a decidable algorithm to remove ambiguity from regular grammars? | ||
| <hidden> | <hidden> | ||