Теория и реализация языков программирования

       

Алгоритм Кока-Янгера-Касами


Приведем алгоритм синтаксического анализа, применимый для любой грамматики в нормальной форме Хомского

Алгоритм Кока-Янгера-Касами

Вход. КС-грамматика G = (N, T, P, S) в нормальной форме Хомского и входная цепочка

Алгоритм Кока-Янгера-Касами
.

Выход. Таблица разбора Tab для w такая, что

Алгоритм Кока-Янгера-Касами
тогда и только тогда, когда A
Алгоритм Кока-Янгера-Касами
+ aiai+1 ... ai+j-1.

Метод.

(1) Положить

Алгоритм Кока-Янгера-Касами
для каждого i. Так что, если
Алгоритм Кока-Янгера-Касами
, то A
Алгоритм Кока-Янгера-Касами
+ ai.

(2) Пусть tij вычислено для 1

Алгоритм Кока-Янгера-Касами
i
Алгоритм Кока-Янгера-Касами
n и 1
Алгоритм Кока-Янгера-Касами
j' < j. Положим tij = {A| для некоторого 1
Алгоритм Кока-Янгера-Касами
k < j правило
Алгоритм Кока-Янгера-Касами
.

Так как 1

Алгоритм Кока-Янгера-Касами
k < j, то k < j и j - k < j. Так что tik и ti+k,j-k вычисляются раньше, чем tij . Если
Алгоритм Кока-Янгера-Касами
, то A
Алгоритм Кока-Янгера-Касами
BC
Алгоритм Кока-Янгера-Касами
+ ai ai+k-1 C
Алгоритм Кока-Янгера-Касами
+ aI ... ai+k-1ai+k ... ai+j-1.

(3) Повторять шаг 2 до тех пор, пока не станут известны tij

для всех 1

Алгоритм Кока-Янгера-Касами
i
Алгоритм Кока-Янгера-Касами
n и 1
Алгоритм Кока-Янгера-Касами
j
Алгоритм Кока-Янгера-Касами
n-i+1.

Алгоритм нахождения левого разбора по таблице разбора Tab.

Вход. КС-грамматика G = (N, T, P, S) в нормальной форме Хомского с правилами, занумерованными от 1 до p, входная цепочка

Алгоритм Кока-Янгера-Касами
и таблица разбора Tab.

Выход. Левый разбор цепочки w или сигнал ошибка.

Метод. Процедура gen(i, j, A):

(1) Если j = 1 и A

Алгоритм Кока-Янгера-Касами
ai = pm, выдать m.

(2) Пусть j > 1 и k - наименьшее из чисел от 1 до j-1, для которых существует

Алгоритм Кока-Янгера-Касами
и правило pm = A
Алгоритм Кока-Янгера-Касами
BC. Выдать m и выполнить gen(i, k, B), затем gen(i + k, j - k, C).

Выполнить gen(1, n, S), если

Алгоритм Кока-Янгера-Касами
, иначе ошибка.



Содержание раздела