This repository has been archived on 2026-07-28. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
cmc/seminars/7.md
T
2025-04-28 20:17:29 +03:00

2.3 KiB

Фиг знает что тут

Задания

Первое задание

L1 = {1^n 0^m 1^m 0^n | n, m > 0}
r = {(), a^m b^(n+m)} // выдать на выходе вместо 1010 aabb
S - 1A0
A - 1A0 | 0B1
B - 0B1 | _

Переводим в другую грамматику (в скобках моменты печати слова)

S - 1A(b)0
A - 1A(b)0 | 0(a)B(b)1
B - 0(a)B(b)1 | _

Второе задание

L1 = {(c/d)a^n b^n | n> 0}
r = {(L1), 1^2n 0^(k+n) | k = |d|}

Описание языка:

S - cS | dS | aAb
A - aAb | _

Преобразование

S - cS | dS(0) | a(11)A(0)b
A - a(11)A(0)b | _

Третье задание

S - bA
A - aC
B - aBb | _
C - Bba | _
r = {(), b^k a ^ m, k = |b|, m = |a|}
S - (b)bA
A - aC(a)
B - (b)aBb(a) | _
C - (b)Bba(a) | _

Перевод в польско-инверсную запись

E - T {+T}
T - F {*F<*>}
F - a<a>|b<b>|(E)
void E() {
    T();
    while(c == '+') {gc(); T(); cout << '+';}
}

из a+a*b получим aab*+

Задача

(тут был граф)

описывающая грамматика:

S - ccCa
C - cCd | B
B - b

грамматика, которая перевернёт:

S - cc<a>C<cc>a
C - c<d>C<c>d | B
B - b<b>

Переводы записей

1) s = i * (--a+b++)

&s i &a -# &b #+ + * = ;  
<!-- * (+ #+ -->
2) x = (a + b, a * b);

&x a b + ; a b *  = ;

Переход в какое-то место программы: _,!

B, _, !F - переход по лжи (B == False)

if (B) p1; else pe;
B 7 !F p1 8 ! p2
1 2 3  4  5 6 7  8
1) if ((x+1) > y) x = y; else y = (x-y) * 3;
2) while (i < 9) {s = 3 + f(i), i++;}
3) do {x = z = (x + y + 5) * b - 3/f; b++;} while(-x+y>0);
4) for (i = 0; i < n; i++) {a = b - c;}
if ((x+1) > y) x = y; else y = (x-y) * 3;

x 1 + y > !F 18 &x y =  ;  22  !  &y  x  y  -  3  *  =  ;
1 2 3 4 5 6  7 8  9 10 11 12 13 14 15 16 17 18 19 20 21 22
while (i < 9) {s = 3 + f(i), i++;}

i 9 < 17 !F &s 3 i f =  ;  &i #+ ;  1  !
1 2 3 4  5  6  7 8 9 10 11 12 13 14 15 16 17
do {x = z = (x + y + 5) * b - 3/f; b++;} while(-x+y>0);


&a a b < _ !F a _ ! b = ;