Реферат: Построение функции предшествования по заданной КС-грамматике

tmp:=ListLR;{список с разделителями}

p:=tmp;

Repeat

{ищем нетерминал (в левых или правых)}

tmp:=p;

tmp2:=NotTerminalL;

While (tmp<>Nil) and (Pos('<',tmp^.Name)<>1) Do

Begin

If tmp^.Name=#0 Then inc(y);

tmp:=tmp^.Next;

End;

If tmp=Nil Then p:=Nil

Else If tmp^.Next<>Nil Then

p:=tmp^.Next{сохраняем позицию указатель на следующий}

Else p:=Nil;

tmpName:=tmp^.Name;

i:=1;

{ищем tmpName в правых или левых}

If tmp<>Nil Then Seek(tmpName,ListLR,tmp);

{tmp указывает на элемент с которого нужно начать добавлять}

inf2.Name:=tmpName;

While (tmp<>Nil) and (tmp^.Name<>#0) Do

Begin

inf.Name:=tmp^.Name;{!!! нужно проверить на повторяющиеся !!!}

If SearchInBlock(y,ListLR,inf)=0 Then

InsListInBlock(y,ListLR,inf2,inf);

tmp:=tmp^.Next;

End;

Until p=Nil;

К-во Просмотров: 740
Бесплатно скачать Реферат: Построение функции предшествования по заданной КС-грамматике