Праволинейная грамматика – грамматика, в которой правая часть каждого правила содержит не более одного терминального символа.
Преобразование в праволинейную грамматику:
Пример 1
| Пример 2
|
|
|
Задана грамматика:
- <S>a<A>
- <S>bc
- <S><A>
- <A>abb<S>
- <A>c<A>
- <A>ε
Задача: построить автомат.
2,3,4 правила нуждаются в преобразовании.
2. . Обозначение «ε» тут несущественно. Можно записать любой символ.
4.
3. - здесь просто переписываем все случаи чему равно <A>
В результате получаем следующую грамматику:
- <S>a<B>
- <S>b<cε>
- <cε>c<ε>
- <ε>ε
- <S>a<bbS>
- <bbS>b<bS>
- <bS>b<S>
- <S>c<A>
- <S>ε
- <A>a<bbS>
- <A>c<A>
- <A>ε
Что можно записать следующей таблицей:
| a
| b
| c
|
|
<S>
| <A>,<bbS> - недетерминированность
| <cε>
| <A>
| допустимо
|
<cε>
| -
| -
| <ε>
| -
|
<ε>
| -
| -
| -
| допустимо
|
<bbS>
| -
| <bs>
| -
| -
|
<A>
| <bbS>
| -
| <A>
| допустимо
|
<bs>
| -
| <S>
| -
| -
|