opora
KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A ZÁSOBNÍKOVÉ AUTOMATY75 E → T | T E ′ E ′ → +T | +T E ′ T → F | F T ′ T ′ → ∗F | ∗F T ′ F → (E) | i do GNF. Řešení: Podle lemmy 4.1 je E < T < F . Jako lineární uspořádání na množině nonterminálů vezměme uspořádání E ′ < E < T ′ < T < F Všechna F -pravidla začínají terminálem (důsledek skutečnosti, že F je největší prvek v uspořádání < ). Předcházející symbol T má pravidla T → F | F T ′ a po aplikaci kroku (3) dostáváme pravidla T → (E) | i | (E)T ′ | iT ′ . Výsledná gramatika v GNF má pravidla: E → (E) ′ | i | (E) ′ T ′ | iT ′ | (E) ′ E ′ | iE ′ | (E) ′ T ′ E ′ | iT ′ E ′ E ′ → +T | +T E ′ T → (E) ′ | i | (E) ′ T ′ | iT ′ T ′ → ∗F | ∗F T ′ F → (E) ′ | i ) ′ → ) Nevýhodou algoritmu 4.8 je velké množství nových pravidel. Existuje alternativní algoritmus převodu do GNF, [1], který nezvětšuje tak výrazně počet pravidel gramatiky, avšak zavádí zase více nonterminálů. Bezkontextové gramatiky umožňují popisovat většinu rysů současných vyšších programovacích jazyků. Způsob získání derivačního stromu věty v dané bezkontextové gramatice je základem syntaktické analýzy a klasifikace syntaktických analyzátorů překladačů a jazykových procesorů. Řada transformací bezkontextových gramatik a existence normálních forem bezkontextových gramatik umožňuje odstraňování některých atributů gramatiky nebo derivaci v této gramatice, jež se využívá v praktických aplikacích i v rámci důkazových technik. 4.8 Cvičení Cvičení 4.8.1 Modifikujte gramatiku G RV z příkladu 4.10 tak, aby zápisy regulárních výrazů rovněž připouštěly: (a) explicitní použití operátoru · konkatenace (např. a · b) (b) použití operátoru + ve významu r + = rr ∗ Cvičení 4.8.2 Gramatika G = ({〈deklarace〉, 〈options〉, 〈option〉, 〈mode〉, 〈scale〉, 〈precision〉, 〈base〉}, {declare, id, real, complex, fixed, floating, single, double, binary, decimal}, P, 〈deklarace〉)
KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A ZÁSOBNÍKOVÉ AUTOMATY76 s pravidly P 〈deklarace〉 → declare id 〈options〉 〈options〉 → 〈option〉 〈options〉 | ɛ 〈option〉 → 〈mode〉 | 〈scale〉 | 〈precision〉 | 〈base〉 〈mode〉 → real | complex 〈scale〉 → fixed floating 〈precision〉 → single | double 〈base〉 → binary | decimal popisuje deklaraci jednoduché proměnné. Tato gramatika však dovoluje vytvářet deklarace, které obsahují redundantní nebo rozporné informace, např. declare X real fixed real floating Zapište gramatiku, která připouští pouze deklarace bez redundancí a rozporů. Uvažte, zda je vhodné takový problém řešit prostředky definice syntaxe jazyka. Cvičení 4.8.3 Pro výpočet tranzitivního uzávěru binární relace definované na konečné množině (např. slovníku gramatiky) se velmi často používá reprezentace relace prostřednictvím booleovské matice a operací nad touto maticí. Je-li A booleovská matice reprezentující binární relaci R na množině M (tj. A[p, q] = true, je-li (p, q) ∈ R a A[p, q] = false, je-li (p, q) /∈ R, p, q ∈ M a A[p, q] je prvek matice A v řádku označeném p a sloupci označeném q), pak tranzitivní uzávěr relace R je relace R + , jenž je reprezentován maticí A + : A + = A + A 2 + . . . + A n , (3) kde n = min(|M| − 1, |R|) a operace sečítání, resp. násobení jsou interpretovány jako disjunkce, resp. konjunkce. Pro výpočet tranzitivního uzávěru existuje efektivnější postup než podle 3, nazývaný, podle autora, Warshallův algoritmus. Algoritmus 4.9 Warshallův algoritmus pro výpočet tranzitivního uzávěru binární relace. Vstup: Booleovská matice A reprezentující binární relaci R. Výstup: Booleovská matice B reprezentující binární relaci R + . Metoda: (1) Polož B = A a i = 1. (2) Pro všechna j, jestliže B[j, i] = true, pak pro k = 1, . . . , n polož B[j, k] = B[j, k] + B[i, k]. (3) Polož i = i + 1. (4) Je-li i ≤ n, vrať se ke kroku (2); v opačném případě je B výsledná matice. Ukažte, že algoritmus 4.9 počítá skutečně tranzitivní uzávěr binární relace. Cvičení 4.8.4 V gramatice z příkladu 4.3 vytvořte levou a pravou derivaci a derivační strom věty i ∗ (i + i − i). Nalezněte všechny fráze, jednoduché fráze a l-frázi této věty.
- Page 25 and 26: KAPITOLA 3. REGULÁRNÍ JAZYKY 24 3
- Page 27 and 28: KAPITOLA 3. REGULÁRNÍ JAZYKY 26 D
- Page 29 and 30: KAPITOLA 3. REGULÁRNÍ JAZYKY 28 2
- Page 31 and 32: KAPITOLA 3. REGULÁRNÍ JAZYKY 30 D
- Page 33 and 34: KAPITOLA 3. REGULÁRNÍ JAZYKY 32 V
- Page 35 and 36: KAPITOLA 3. REGULÁRNÍ JAZYKY 34 D
- Page 37 and 38: KAPITOLA 3. REGULÁRNÍ JAZYKY 36 V
- Page 39 and 40: KAPITOLA 3. REGULÁRNÍ JAZYKY 38 D
- Page 41 and 42: KAPITOLA 3. REGULÁRNÍ JAZYKY 40 3
- Page 43 and 44: KAPITOLA 3. REGULÁRNÍ JAZYKY 42 3
- Page 45 and 46: KAPITOLA 3. REGULÁRNÍ JAZYKY 44 V
- Page 47 and 48: KAPITOLA 3. REGULÁRNÍ JAZYKY 46 3
- Page 49 and 50: KAPITOLA 3. REGULÁRNÍ JAZYKY 48 P
- Page 51 and 52: KAPITOLA 3. REGULÁRNÍ JAZYKY 50 3
- Page 53 and 54: KAPITOLA 3. REGULÁRNÍ JAZYKY 52 C
- Page 55 and 56: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 57 and 58: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 59 and 60: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 61 and 62: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 63 and 64: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 65 and 66: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 67 and 68: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 69 and 70: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 71 and 72: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 73 and 74: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 75: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 79 and 80: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 81 and 82: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 83 and 84: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 85 and 86: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 87 and 88: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 89 and 90: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 91 and 92: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 93 and 94: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 95 and 96: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 97 and 98: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 99 and 100: KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A
- Page 101 and 102: Kapitola 5 Turingovy stroje Cílem
- Page 103 and 104: KAPITOLA 5. TURINGOVY STROJE 102 5.
- Page 105 and 106: KAPITOLA 5. TURINGOVY STROJE 104
- Page 107 and 108: KAPITOLA 5. TURINGOVY STROJE 106 L:
- Page 109 and 110: KAPITOLA 5. TURINGOVY STROJE 108 St
- Page 111 and 112: KAPITOLA 5. TURINGOVY STROJE 110 p
- Page 113 and 114: KAPITOLA 5. TURINGOVY STROJE 112
- Page 115 and 116: KAPITOLA 5. TURINGOVY STROJE 114 -
- Page 117 and 118: KAPITOLA 5. TURINGOVY STROJE 116 5.
- Page 119 and 120: KAPITOLA 5. TURINGOVY STROJE 118 D
- Page 121 and 122: KAPITOLA 5. TURINGOVY STROJE 120 5.
- Page 123 and 124: KAPITOLA 5. TURINGOVY STROJE 122 5.
- Page 125 and 126: KAPITOLA 6. MEZE ROZHODNUTELNOSTI 1
KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A ZÁSOBNÍKOVÉ AUTOMATY75<br />
E → T | T E ′<br />
E ′ → +T | +T E ′<br />
T → F | F T ′<br />
T ′ → ∗F | ∗F T ′<br />
F → (E) | i do GNF.<br />
Řešení: Podle lemmy 4.1 je E < T < F . Jako lineární uspořádání na množině<br />
nonterminálů vezměme uspořádání<br />
E ′ < E < T ′ < T < F<br />
Všechna F -pravidla začínají terminálem (důsledek skutečnosti, že F je největší<br />
prvek v uspořádání < ). Předcházející symbol T má pravidla T → F | F T ′ a po<br />
aplikaci kroku (3) dostáváme pravidla T → (E) | i | (E)T ′ | iT ′ .<br />
Výsledná gramatika v GNF má pravidla:<br />
E → (E) ′ | i | (E) ′ T ′ | iT ′ | (E) ′ E ′ | iE ′ | (E) ′ T ′ E ′ | iT ′ E ′<br />
E ′ → +T | +T E ′<br />
T → (E) ′ | i | (E) ′ T ′ | iT ′<br />
T ′ → ∗F | ∗F T ′<br />
F → (E) ′ | i<br />
) ′ → )<br />
Nevýhodou algoritmu 4.8 je velké množství nových pravidel. Existuje alternativní<br />
algoritmus převodu do GNF, [1], který nezvětšuje tak výrazně počet pravidel<br />
gramatiky, avšak zavádí zase více nonterminálů.<br />
Bezkontextové gramatiky umožňují popisovat většinu rysů současných vyšších<br />
programovacích jazyků. Způsob získání derivačního stromu věty v dané bezkontextové<br />
gramatice je základem syntaktické analýzy a klasifikace syntaktických analyzátorů<br />
překladačů a jazykových procesorů. Řada transformací bezkontextových<br />
gramatik a existence normálních forem bezkontextových gramatik umožňuje odstraňování<br />
některých atributů gramatiky nebo derivaci v této gramatice, jež se využívá v<br />
praktických aplikacích i v rámci důkazových technik.<br />
4.8 Cvičení<br />
Cvičení 4.8.1 Modifikujte gramatiku G RV z příkladu 4.10 tak, aby zápisy regulárních<br />
výrazů rovněž připouštěly:<br />
(a) explicitní použití operátoru · konkatenace (např. a · b)<br />
(b) použití operátoru + ve významu r + = rr ∗<br />
Cvičení 4.8.2 Gramatika G = ({〈deklarace〉, 〈options〉, 〈option〉, 〈mode〉,<br />
〈scale〉, 〈precision〉, 〈base〉}, {declare, id, real, complex, fixed, floating,<br />
single, double, binary, decimal}, P, 〈deklarace〉)