- •Отчет по курсовой работе
- •Раздел 2.
- •2.1. Общие сведения
- •2.2. Задания
- •2.2.1. Исключение бесполезных символов
- •2.2.3. Исключение цепных правил
- •2) Новое множество правил вывода:
- •2.2.4. Исключение левой рекурсии
- •Раздел 4.
- •4.2. Задания
- •4.2.1. Построение детерминированного автомата с магазинной памятью
- •4.2.2. Построение детерминированного преобразователя с магазинной памятью.
- •4.2.3. Построение недетерминированного мп-автомата по кс-грамматике
- •4.2.4. Построение недетерминированного расширенного мп-автомата по кс-грамматике
- •Раздел 6.
- •Раздел 7
- •Раздел 1.
- •Раздел 5.
Дисциплина ТЯП и МТ
Кафедра МОЭВМ
Отчет по курсовой работе
Вариант №19
Выполнили: Угаров Ю.
Лузянин Н.
Группа: № 8303
Проверил: Опалева Э.А.
Санкт-Петербург
2011 год
Раздел 2.
ЭКВИВАЛЕНТНЫЕ ПРЕОБРАЗОВАНИЯ КС-ГРАММАТИК.
2.1. Общие сведения
Грамматики G1 и G2 называются эквивалентными, если L(G1) = L(G2).
Эквивалентные преобразования КС-грамматик при выполнении курсовой работы сводятся к следующим преобразования:
удаление бесполезных символов;
удаление ε-правил;
удаление цепных правил;
исключение из КС-грамматики левой рекурсии.
Алгоритмы исключения бесполезных символов, ε-правил, цепных правил, леворекурсивных правил описаны в [1].
2.2. Задания
2.2.1. Исключение бесполезных символов
Преобразовать КС-грамматику G = < T, N, S, R > в эквивалентную грамматику, не содержащую бесполезных символов:
2.2.1.5. T = { a, b, c, d ), N = { S, A, B, C }, R = { S → aC, S → bA, A → cAB, B → aC, C → bA, C → d };
1)Строим множество производящих нетерминальных символов
Np = {S, B, C}
Исключаем непроизводящие нетерминалы:
R1 = {S→ aC, B → aC, C → d }
Получили грамматику:
G1 = <{ a, b, c, d }, {B, S, C,}, S, R1>
2) Строим множество достижимых символов:
Nr = { S, A, B, C }
Исключаем недостижимые символы:
R2 = { S → aC, S → bA, A → cAB, B → aC, C → bA, C → d }
Получили грамматику:
G2 = <{ a, b, c, d }, { S, A, B, C }, S, R2>
Результат: G2 = <{ a, b, c ,d}, { S, B, C }, S, { S → aC, S → bA, A → cAB, B → aC, C → bA, C → d }>.
2.2.2. Исключение ε-правил
Преобразовать исходную КС-грамматику G = < T, N, S, R > в эквивалентную НКС-грамматику:
2.2.2.10. Т = { begin, end, d, p, ;, , }, N = { S, D, P, X, Y },
R = { S → begin D ; P end D → dX X → , D X → ε P → pY Y → ,P Y → ε };
1) Строим множество укорачивающих нетерминалов:
Nε = { X, Y }
2) Новое множество правил вывода:
R1 = { S → begin D ; P end D → dX D → d X → , D P → pY P → p Y → ,P }
Результат: G1 = <{ begin, end, d, p, ;, ,}, { S, D, P, X, Y}, S, {S → begin D ; P end D → dX D → d X → , D P → pY P → p Y → ,P }>.
2.2.3. Исключение цепных правил
Преобразовать НКС-грамматику G = < T, N, S, R > в эквивалентную КС-грамматику, не содержащую цепных правил.
2.2.3.3. T = { i, |, ∨, &, (, ) }, N = { S, T, P }, R = { S → S ∨ T, S → T, T → T&P, T → P, P → | P, P → (S), P → i };
1) Построим множества:
NS = {S,T,P}
NT = {T,P}
Np = {P}
2) Новое множество правил вывода:
R1 = {S → S ∨ T, S → T&P, S → |P , S → (S), S → i, T → T&P, T → |P, T → (S), T → i, P → | P, P → (S), P → i }
Результат: G1 = <{ i, |, ∨, &, (, ) }, { S, T, P }, S, { S → S ∨ T, S → T&P, S → |P , S → (S), S → i, T → T&P, T → |P, T → (S), T → i, P → | P, P → (S), P → i }>.
2.2.4. Исключение левой рекурсии
Исключить левую рекурсию из КС-грамматики G = < T, N, S, R >.
2.2.4.2. T = { a, b }, N = { S, A, B }, R = { S → Ba, S → Ab, A → Sa, A → AAb, A → a, B → Sb, B → BBa, B → b };
1) Заменим A-правила { A → Sa, A → AAb, A → a } на правила:
{ A → Baa, A → BaaA’, A’ → ba, A’ → baA’, A → aA’, A → a, A’ → Ab, A’ → AbA’}.
2) Заменим B-правила { B → Sb, B → BBa, B → b } на правила:
{ B’ → aabb, B’ → aabbB’, B’ → aaA’bb, B → BaaA’bbB’, B → abb, B → abbB’, B → aA’bb, B → aA’bbB’ , B’ → ab, B’ → abB’ , B → b, B → bB’, B’ → Ba, B’ → BaB’}.
Результат: G1 = <{ a, b }, {S, A, B, A’, B’}, S, { S → Ba, S → Ab, A → Baa, A → BaaA’, A’ → ba, A’ → baA’, A → aA’, A → a, A’ → Ab, A’ → AbA’, B’ → aabb, B’ → aabbB’, B’ → aaA’bb, B → BaaA’bbB’, B → abb, B → abbB’, B → aA’bb, B → aA’bbB’ , B’ → ab, B’ → abB’ , B → b, B → bB’, B’ → Ba, B’ → BaB’ }>.