ВУЗ:
Составители:
69
рекурсивно. Если текущий символ (sym) входного файла совпадает с
символом в текущем узле структуры данных, то процедура переходит к узлу,
на который указывает поле suc, иначе – к узлу, на который указывает поле
alt. Полученная структура данных приведена на рис.12.1.
(
A
*
*
NULL
+
**
*
NULL
*
empty
NULL
*
)
NULL
x
NULL
*
NULL NULL
**
Рис. 12.1. Представление синтаксического графа в виде структуры данных.
void parse(hpointer goal, int &match)
{
pointer s;
s = goal->entry;
do
{
if(s->isTerminal)
{
if(s->tsym == sym)
{
match = 1;
sym = fgetc(input);
}
else
match = (s->tsym == empty)? 1 : 0;
}
else
parse(s->nsym, match);
if(match)
s = s->suc;
else
s = s->alt;
} while(s != NULL);
}
69 рекурсивно. Если текущий символ (sym) входного файла совпадает с символом в текущем узле структуры данных, то процедура переходит к узлу, на который указывает поле suc, иначе – к узлу, на который указывает поле alt. Полученная структура данных приведена на рис.12.1. A * ( * + * NULL * * NULL * * * * x empty ) NULL NULL NULL NULL NULL * Рис. 12.1. Представление синтаксического графа в виде структуры данных. void parse(hpointer goal, int &match) { pointer s; s = goal->entry; do { if(s->isTerminal) { if(s->tsym == sym) { match = 1; sym = fgetc(input); } else match = (s->tsym == empty)? 1 : 0; } else parse(s->nsym, match); if(match) s = s->suc; else s = s->alt; } while(s != NULL); }
Страницы
- « первая
- ‹ предыдущая
- …
- 67
- 68
- 69
- 70
- 71
- …
- следующая ›
- последняя »