Варіант 17
Побудувати програму на мові SIPL. Перевірити синтаксичну правильність програми , побудувавши її дерево синтаксичного виводу. Побудувати семантичний терм даної програми та застосувати його до певних вхідних даних.
Визначити чи є трикутник зі сторонами a, b, c рівнобедреним (a, b, c – додатні цілі числа)
Для граматики G=({S, A, B, C}, {a, b, c, d}, P, S), де P={SaB, BCdA, ACc, Cb} вибрати довільний ланцюжок і побудувати відповідне дерево виводу.
Виконайте еквівалентні перетворення граматики G=({R, T, F, G, K}, {m, i, j, k, ^, ~, ⊥}, P, R), де P = {R→R~T⊥| R^T⊥ | ε; T→F | Fi | Fj | Gk | ε; G→GkG; K→Ki | Km | m} спрямовані на видалення:
ε –правил;
Непродуктивних символів;
Недосяжних символів.
Побудуйте, якщо це можливо, ліволінійну граматику, яка породжує мову L(G) = {(anb), (anc) | n≥0}.
Варіант 18
Побудувати програму на мові SIPL. Перевірити синтаксичну правильність програми , побудувавши її дерево синтаксичного виводу. Побудувати семантичний терм даної програми та застосувати його до певних вхідних даних.
Обчислити суму непарних чисел на проміжку [0, x] (x – додатне ціле число)
Для граматики G=({S, A, B, C, D}, {a, b, c, d, v}, P, S), де P={SaBC, BAD, Ab, Dda, Ccv} вибрати довільний ланцюжок і побудувати відповідне дерево виводу.
Виконайте еквівалентні перетворення граматики G= ({S, A, B, D, E}, {a, b, c, d, e}, P, S), де P = {S→ aSbDcC | BcA, A→BcS | acb, B→ c | Bb | ε, D→ ccAD, E→ de} спрямовані на видалення:
ε –правил;
Непродуктивних символів;
Недосяжних символів.
Побудуйте, якщо це можливо, ліволінійну граматику, яка породжує ланцюжки, які починаються і закінчуються парною цифрою, крім того парна цифра чередується з непарною.
Варіант 19
Побудувати програму на мові SIPL. Перевірити синтаксичну правильність програми , побудувавши її дерево синтаксичного виводу. Побудувати семантичний терм даної програми та застосувати його до певних вхідних даних.
Обчислити значення функції sg(x) (x – додатне ціле число)
Для граматики G=({S}, {a, b}, P, S), де P={SaSa, SbSb, Saa, Sbb} вибрати довільний ланцюжок і побудувати відповідне дерево виводу.
Виконайте еквівалентні перетворення граматики G=({Q, A, B, C, D}, {a, b, c, d}, P, Q), де P = {Q→acA | acB | ε , B→A | Cb | ε , A→Aa | Ab | a, C→dCc, D→dc} спрямовані на видалення:
ε –правил;
Непродуктивних символів;
Недосяжних символів.
Побудуйте, якщо це можливо, ліволінійну граматику, яка породжує мову L(G)={0n1m⊥ | n > 0, m > 0}.
Варіант 20
Побудувати програму на мові SIPL. Перевірити синтаксичну правильність програми , побудувавши її дерево синтаксичного виводу. Побудувати семантичний терм даної програми та застосувати його до певних вхідних даних.
Обчислити 2x (x – додатне ціле число)
Для граматики G=({S, A, B, C}, {a, b, c, s}, P, S), де P={SAbC, S, ABc, Bas, Cb} вибрати довільний ланцюжок і побудувати відповідне дерево виводу.
Виконайте еквівалентні перетворення граматики G=({E, T, F, G, H}, {+, -, *, /, n, m, h}, P, E), де P = {E→T | E+T | E-T | ε; T→F | F*T | F/T | ε; F→G | Fn | n; G→Gm; H→Hh | h} спрямовані на видалення:
ε –правил;
Непродуктивних символів;
Недосяжних символів.
Побудуйте, якщо це можливо, ліволінійну граматику, яка породжує мову L(G)={anb | n2}.