Варіант 13
Побудувати програму на мові SIPL. Перевірити синтаксичну правильність програми , побудувавши її дерево синтаксичного виводу. Побудувати семантичний терм даної програми та застосувати його до певних вхідних даних.
Одноклітинна амеба кожні три години ділиться на 2 частини. Порахувати скільки амеб буде через x годин (x – додатне ціле число).
Для граматики G=({S, Q, A, B}, {a, b, c}, P, S), де P={SBA, S , BQb, QAa, Ac} вибрати довільний ланцюжок і побудувати відповідне дерево виводу.
Виконайте еквівалентні перетворення граматики G=({R, T, U, W, V}, {0, 1, +, -, *, /}, P, R), де P = {R→T1T | T1U | W | ε; T→U | T01 | T10 | ε; U→+U | +0 | +1, W→W-W | W+W; V→*0 | /1} спрямовані на видалення:
ε –правил;
Непродуктивних символів;
Недосяжних символів.
Побудуйте, якщо це можливо, ліволінійну граматику, яка породжує мову L(G) = {an$bm| n>0, m>0}.
Варіант 14
Побудувати програму на мові SIPL. Перевірити синтаксичну правильність програми , побудувавши її дерево синтаксичного виводу. Побудувати семантичний терм даної програми та застосувати його до певних вхідних даних.
Обчислити x–y (x ≥ y), використовуючи цикл та операцію додавання (x, y – додатні цілі числа).
Для граматики G=({S, A, B, C}, {a, b, c}, P, S), де P={S AbC, S , ABc, Bab, C} вибрати довільний ланцюжок і побудувати відповідне дерево виводу.
Виконайте еквівалентні перетворення граматики G=({Q, A, B, C, D}, {0, 1, -}, P, Q), де P = {Q→01A | 01B | A; A→ 0B1 | B | 1 | ε; B→BA0 | B1 | C | ε; C→0C11; D→ - D1 | -0 | -1} спрямовані на видалення:
ε –правил;
Непродуктивних символів;
Недосяжних символів.
Побудуйте, якщо це можливо, ліволінійну граматику, яка породжує мову L(G) = {(01)n⊥| n>0}.
Варіант 15
Побудувати програму на мові SIPL. Перевірити синтаксичну правильність програми , побудувавши її дерево синтаксичного виводу. Побудувати семантичний терм даної програми та застосувати його до певних вхідних даних.
Визначити чи є число x дільником числа y (x, y – додатні цілі числа).
Для граматики G=({S, A, B, D}, {a, b, c}, P, S), де P={S AcB, Abc, BacD, Dabc} вибрати довільний ланцюжок і побудувати відповідне дерево виводу.
Виконайте еквівалентні перетворення граматики G=({X, Y, Z, K, L}, {a, b, l, =, <, >, ∧, ∨, ¬}, V, X), де V = {X→Y | Y=Y | Y<Y | Y>Y | K; Y→Y∧Z | Y∨ Z | ε; Z→ ¬ a | ¬ b| ε; K→ ¬ K; 5) L→ l | a | b} спрямовані на видалення:
ε –правил;
Непродуктивних символів;
Недосяжних символів.
Побудуйте, якщо це можливо, ліволінійну граматику, яка породжує мову L(G) = {(ab)n(cd)m | n>0, m>0}.
Варіант 16
Побудувати програму на мові SIPL. Перевірити синтаксичну правильність програми , побудувавши її дерево синтаксичного виводу. Побудувати семантичний терм даної програми та застосувати його до певних вхідних даних.
Обчислити суму парних чисел на проміжку [0, x] (x – додатне ціле число)
Для граматики G=({S, A, B, С}, {b, c, v}, P, S), де P={SSBC, S , BAb, Acv, Cc} вибрати довільний ланцюжок і побудувати відповідне дерево виводу.
Виконайте еквівалентні перетворення граматики G=({S, X, Y, Z, K}, {x, y, z, k, #, $}, P, S), де P = { S→X | Y | Z; X→x#X | x#Y | ε; Y→Yy$ |Yz$ | $ | ε; Z→Zz$; K→Kk$ | k$} спрямовані на видалення:
ε –правил;
Непродуктивних символів;
Недосяжних символів.
Побудуйте, якщо це можливо, ліволінійну граматику, яка породжує мову L(G) = {(abc)m , ε | m≥0}.