Курсовые проекты / лабы мои / Распознователь
.docG({for, do, <, >, =, a, :=, (, ), ;}, {S, F, T, E}, P, S) с правилами P:
S → F;
F → for (T) do F│a:=a
T → F;E;F│;E;F│F;E;│;E;
E → a<a│ a>a│ a=a
3.2 Построение синтаксического анализатора
Множества крайних левых и крайних правых символов L(U), R(U) относительно всех нетерминальных символов грамматики представлены в таблице 2. В таблице 3 описаны итоговые множества крайних левых и крайних правых символов L(U), R(U) относительно всех нетерминальных символов грамматики.
Таблица 2
U |
L(U) |
R(U) |
S |
F |
; |
F |
for, a |
F, a |
T |
F, ; |
F, E, ; |
E |
a |
A |
Таблица 3
U |
L(U) |
R(U) |
S |
F, for, a |
;, F, a |
F |
for, a |
F, a |
T |
F, for, a |
F, E, a |
E |
a |
a |
Множества крайних левых и крайних правых терминальных символов Lt(U), Rt(U) относительно всех нетерминальных символов грамматики и итоговые множества крайних левых и крайних правых терминальных символов Lt(U), Rt(U) относительно всех нетерминальных символов грамматики представлены соответственно в таблицах 4 и 5.
Таблица 4
U |
Lt(U) |
Rt(U) |
S |
; |
; |
F |
for, a |
do, a |
T |
; |
; |
E |
<, >, = |
<, >, = |
Таблица 5
U |
Lt(U) |
Rt(U) |
S |
;, for, a, <, >, = |
;, do, a, <, >, = |
F |
for, a, <, >, = |
do, a, <, >, = |
T |
;, for, a, <, >, = |
;, do, a, <, >, = |
E |
a |
a |
Матрица операторного предшествования показана в таблице 6
Таблица 6 – Матрица операторного предшествования
|
; 1 |
for 2 |
do 3 |
< 4 |
> 5 |
a 6 |
= 7 |
:= 8 |
( 9 |
) 10 |
┴к |
; |
= |
< |
|
< |
< |
< |
< |
|
> |
|
> |
for |
|
|
|
|
|
|
|
|
= |
|
|
do |
> |
< |
|
< |
< |
< |
= |
|
> |
|
> |
< |
> |
|
|
|
|
= |
|
|
> |
|
> |
> |
> |
|
|
|
|
= |
|
|
> |
|
> |
a |
> |
|
|
= |
= |
|
= |
= |
> |
|
> |
= |
> |
|
|
|
|
= |
|
|
> |
|
> |
:= |
|
|
|
|
|
= |
|
|
|
|
|
( |
< |
< |
|
< |
< |
< |
< |
|
|
= |
|
) |
|
|
= |
|
|
|
|
|
|
|
|
┴н |
< |
< |
|
< |
< |
< |
< |
|
|
|
|
E → E;
E → for (E) do E│a:=a
E → E;E;E│;E;E│E;E;│;E;
E → a<a│ a>a│ a=a