ВУЗ:
Составители:
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
- …
- следующая ›
- последняя »
