Изменения

Перейти к: навигация, поиск
Однозначные грамматики
Рассмотрим грамматику:
:<tex>"("</tex> и <tex>")"</tex> {{---}} терминальные символы
:<tex>S</tex> {{---}} стартовый нетерминал
<tex>"("</tex> и <tex>")"</tex> {{---}} терминальные символы;  <tex>S</tex> {{---}} стартовый нетерминал;  Правила:<br>1) :#<tex>S\rightarrow (S)S</tex><br>2) :#<tex>S\rightarrow \varepsilon</tex><br>
Покажем, что эта грамматика однозначна.
 
Для этого, используя индукцию, докажем, что для любого слова <tex>\omega</tex>, являющегося правильной скобочной последовательностью, в данной грамматике существует только одно дерево разбора.
'''База:''' :Если <tex>\omega=\varepsilon</tex>, то оно выводится только по второму правилу <tex>\Rightarrow</tex> для него существует единственное дерево разбора.
'''Переход:''' :Пусть <tex>\left\vert \omega \right\vert=n</tex> и <tex>\forall \upsilon</tex>: <tex>\left\vert \upsilon \right\vert < n</tex> и <tex>\upsilon</tex> {{---}} правильная скобочная последовательность <tex>\exists!</tex> дерево разбора.
Найдем в слове <tex>\omega</tex> минимальный индекс <tex>i \neq 0</tex> такой, что слово <tex>\omega[0..i]</tex> является правильной скобочной последовательностью. Так как <tex>i \neq 0</tex> минимальный, то <tex>\omega[0..i]=(\alpha)</tex>. Из того, что <tex>\omega</tex> является правильной скобочной последовательностью <tex>\Rightarrow</tex> <tex>\alpha</tex> и <tex>\beta=\omega[i+1..n-1]</tex> {{---}} правильные скобочные последовательности, при этом <tex>\left\vert \alpha \right\vert<n</tex> и <tex>\left\vert \beta \right\vert<n \Rightarrow</tex> по индукционному предположению предположению у <tex>\alpha</tex> и <tex>\beta</tex> существуют единственные деревья разбора.
59
правок

Навигация