Лабораторные работы 1-7(старые) / Отчет по ТЯП6
.docСанкт-Петербургский государственный электротехнический университет
КАФЕДРА МО ЭВМ
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ N6
по дисциплине "Теория языков программирования"
“Алгоритм разбора для LR(0) – грамматик.”
Преподаватель: Самойленко В.П.
студенты гр. 0341 Юбрин А.Н.
Шин Е.Д.
Санкт-Петербург
2002
1 Построить LR(0) – распознаватель грамматики G = (T,N,S,R).
T= {a,b,c}
N= {S,A,B}
R= {S aSb (1), S aSc (2), S ab (3)}
V={S,a,b,c}
VP={S0, a11, S12, b13, a21, S22, c23, a31, b32, }
-
Построим управляющую таблицу, для функции f
Она должна содержать 10 строк помеченных символами из множества VP и 4 столбца помеченных символами из T{}
Управляющая таблица f
|
a |
b |
c |
|
S0 |
|
|
|
ДОП |
a11 |
П |
П |
П |
|
S12 |
П |
П |
П |
|
b13 |
C,1 |
C,1 |
C,1 |
C,1 |
a21 |
П |
П |
П |
|
S22 |
П |
П |
П |
|
c23 |
C,2 |
C,2 |
C,2 |
C,2 |
a31 |
П |
П |
П |
|
b32 |
C,3 |
C,3 |
C,3 |
C,3 |
|
П |
П |
П |
|
Построим таблицу ВПОД
Для этого определим отношения
S12 ВПОД b13
S22 ВПОД c23
a31 ВПОД b32
ВПОД Y, где YВПЕРВ(S0), ВПЕРВ(S0)={a11, a21, a31, S0}
a11 ВПОД Y, где Y ВПЕРВ(S12)={a11, a21, a31, S12}
a21 ВПОД Y, где Y ВПЕРВ(S22)={a11, a21, a31, S22}
|
S0 |
a11 |
S12 |
b13 |
a21 |
S22 |
c23 |
a31 |
b32 |
S0 |
|
|
|
|
|
|
|
|
|
a11 |
|
1 |
1 |
|
1 |
|
|
1 |
|
S12 |
|
|
|
1 |
|
|
|
|
|
b13 |
|
|
|
|
|
|
|
|
|
a21 |
|
1 |
|
|
1 |
1 |
|
1 |
|
S22 |
|
|
|
|
|
|
1 |
|
|
c23 |
|
|
|
|
|
|
|
|
|
a31 |
|
|
|
|
|
|
|
|
1 |
b32 |
|
|
|
|
|
|
|
|
|
|
1 |
1 |
|
|
1 |
|
|
1 |
|
Построим по таблице недетерминированную управляющую таблицу для g
Управляющая таблица f
|
a |
b |
c |
S |
S0 |
|
|
|
|
a11 |
a11, a21, a31 |
|
|
S12 |
S12 |
|
b13 |
|
|
b13 |
|
|
|
|
a21 |
a11, a21, a31 |
|
|
S22 |
S22 |
|
|
c23 |
|
c23 |
|
|
|
|
a31 |
|
b32 |
|
|
b32 |
|
|
|
|
|
a11, a21, a31 |
|
|
S0 |
Преобразуем в детерминированный автомат
{a11, a21, a31} - ax
{S12, S22} - Sx
Запишем окончательный вариант управляющей таблицы
|
a |
b |
c |
|
a |
b |
c |
S |
S0 |
|
|
|
ДОП |
|
|
|
|
ax |
П |
П |
П |
|
ax |
b32 |
|
Sx |
Sx |
П |
П |
П |
|
|
b13 |
c23 |
|
b13 |
C,1 |
C,1 |
C,1 |
C,1 |
|
|
|
|
c23 |
C,2 |
C,2 |
C,2 |
C,2 |
|
|
|
|
b32 |
C,3 |
C,3 |
C,3 |
C,3 |
|
|
|
|
|
П |
П |
П |
|
ax |
|
|
S0 |
ПРИМЕР работы анализатора
SaScaabc
(2) (3)
Для цепочки: aabc
Начальная конфигурация (, aabc, ) |(ax, abc, ) |(axax, bc, ) |(axaxb, c, ) |
(axSx, c, 3)|(axSxc32, , 3) |(S0, , 32) |(, , 32)
Выходная цепочка: 3 2