Вариант
.docxВариант №
1.Для заданных примеров цепочек построить правила грамматики. Проверить правильность составления правил с помощью вывода.
1. i=j=k=50;
2. k=36;
3. k=i=k=j=(a-b)+(c+b)+b-c;
2.Определить к какому классу относится построенная грамматика:
Простая
Слаборазделеная
LL- граматика
3. Если грамматики не является простой, то построить функции Перв, След и множество Выбор. Для заданной грамматики построить команды распознавателя.
4. Работу роспознавателя проверить на примере распознавания цепочки
Решение:
Правила:
-
I -> SM;
-
M -> 50 | 36| FR1
-
S -> B=R
-
B -> i | j |k
-
R -> B=R | $
-
F ->(CDC) | CDC
-
R1 -> +FR1 | $
-
C -> a | b | c
-
D -> + | -
Функции Перв, След и Выбор:
Перв(1) = { i, j, k };
Перв(2.1) = { 50 };
Перв(2.2) = { 36 };
Перв(2.3) = {a, b, c };
Перв(3) = { i, j, k };
Перв(4.1) = { i };
Перв(4.2) = { j };
Перв(4.3) = { k };
Перв(5.1) = { i, j, k };
Перв(5.2) = { $ };
Перв(6.1) = { ( };
Перв(6.2) = { a, b, c };
Перв(7.1) = { + };
Перв(7.2) = { $ };
Перв(8.1) = { a };
Перв(8.2) = { b };
Перв(8.3) = { c };
Перв(9.1) = { + };
Перв(9.2) = { - };
След(S) = { 50, 36, (, a, b, c };
След(M) = { ; };
След(B) = { = };
След(R) = { 50, 36, (, a, b, c };
След(F) = { + };
След(R1) = { 50, 36, (, a, b, c };
След(C) = { +, - };
След(D) = { a, b, c };
Выбор(1) = { i, j, k };
Выбор (2.1) = { 50 };
Выбор (2.2) = { 36 };
Выбор (2.3) = {a, b, c };
Выбор (3) = { i, j, k };
Выбор (4.1) = { i };
Выбор (4.2) = { j };
Выбор (4.3) = { k };
Выбор (5.1) = { i, j, k };
Выбор (5.2) = След(R) = { 50, 36, (, a, b, c };
Выбор (6.1) = { ( };
Выбор (6.2) = { a, b, c };
Выбор (7.1) = { + };
Выбор (7.2) = След(M) = { ; };
Выбор (8.1) = { a };
Выбор (8.2) = { b };
Выбор (8.3) = { c };
Выбор (9.1) = { + };
Выбор (9.2) = { - };
Побудуємо команди розпізнавача:
f*( S, i, I ) = ( S, MS );
f* (S, j, I ) = ( S, MS );
f*(S, k, I ) = ( S, MS );
f(S, 50, M) = ( S, $ );
f(S, 36, M) = ( S, $ );
f*(S, (, M ) = (S, RF );
f*(S, a, M ) = (S, RF );
f*(S, b, M ) = (S, RF );
f*(S, c, M ) = (S, RF );
f*(S, i, S ) = (S, R=B );
f*(S, j, S ) = (S, R=B );
f*(S, k, S ) = (S, R=B );
f(S, i, B ) = (S, $);
f(S, j, B ) = (S, $);
f(S, k, B ) = (S, $);
f*(S, i, R ) = (S, R=B );
f*(S, j, R ) = (S, R=B );
f*(S, k, R ) = (S, R=B );
f*(S, 50, R ) = (S, $);
f*(S, 36, R ) = (S, $);
f*(S, (, R ) = (S, $);
f*(S, a, R ) = (S, $);
f*(S, b, R ) = (S, $);
f*(S, c, R ) = (S, $);
f(S, (, F ) = (S, (CDC));
f*(S, a, F ) = (S, CDC);
f*(S, b, F ) = (S, CDC);
f*(S, c, F ) = (S, CDC);
f(S, +, R1 ) = (S, R1F+ );
f*(S, 50, R1 ) = (S, $);
f*(S, 36, R1 ) = (S, $);
f*(S, (, R1 ) = (S, $);
f*(S, a, R1 ) = (S, $);
f*(S, b, R1 ) = (S, $);
f*(S, c, R1 ) = (S, $);
f(S, a, C ) = (S, $ );
f(S, b, C ) = (S, $ );
f(S, c, C ) = (S, $ );
f(S, +, D ) = (S, $ );
f(S, -, D ) = (S, $ );
Вариант №14
1.Для заданных примеров цепочек построить правила грамматики. Проверить правильность составления правил с помощью вывода.
1. float &b, *c ;int b array[2][3]:
2. char *i[5]; float a, *b ;
3. int *c, i, c[4], *b;
2.Определить к какому классу относится построенная грамматика:
Простая
Слаборазделеная
LL- граматика
3. Если грамматики не является простой, то построить функции Перв, След и множество Выбор. Для заданной грамматики построить команды распознавателя.
4. Работу роспознавателя проверить на примере распознавания цепочки