Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Побудова функції передування по заданій КС-граматики

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





inf: List): Byte;

Var j: Byte;

Ex: Boolean;

Begin

If l <> Nil Then

Begin

j: = 1;

While (L <> Nil) and (n <> j) Do

Begin

If l ^. Name = # 0 Then inc (j);

l: = l ^. Next;

End;

Ex: = False;

While (L <> nil) and (l ^. Name <> inf.Name) and Not Ex Do

Begin

inc (j);

If l ^. Name = # 0 Then Ex: = True;

l: = l ^. next;

End;

End;

If (l = Nil) or Ex Then SearchInBlock: = 0

Else SearchInBlock: = j;

End;

Procedure InsListInBlock (n: Byte; l: NotTerm; x, d: List);

Var q: NotTerm;

j: Byte;

Begin

If l = Nil Then WriteLN ('Увага! Внутрішня помилка 03')

Else

Begin

j: = 1;

While (L <> Nil) and (n <> j) Do

Begin

If l ^. Name = # 0 Then inc (j);

l: = l ^. Next;

End;

While (L <> Nil) and (l ^. Name <> x.Name) Do

l: = l ^. Next;

If l <> Nil Then

Begin

new (q);

q ^. Name: = d.Name;

q ^. Next: = l ^. Next;

l ^. Next: = q;

End;

End;

End;

Procedure Add_ (ListLR: NotTerm);

Var tmp, p: NotTerm;

tmp2: NotTerm;

tmpName: Str10;

y, j: Byte;

inf: List;

inf2: List;

Begin

y: = 1;

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;

End;

Var tmp: List;

term: String;

Label More, Next;

Begin

{припускаємо що граматика не містить помилок}

{аналіз граматики без відслідковування помилок}

y: = 1;

i: = 1;

Repeat

PosStr (y, s);

Blank;

i: = Pos ("=", S) +1; {i ставимо після: =}

More: Blank;

If s [i] = '<' Then

Begin

inc (i...


Назад | сторінка 13 з 17 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Creation of control system by a personnel how to begin with a zero
  • Реферат на тему: This is a list of problems facing society today
  • Реферат на тему: Procedure of preparation business-plan
  • Реферат на тему: Увага, його властивості, види і функції
  • Реферат на тему: Програма для пошуку мінімуму функції двох дійсних змінних в заданій області