Page 38 - 4625
P. 38
char * NAME_ELEM(int);
визначити кількість слів у словниковій множині:
int calc_word(struct fdata p);
отримати слово з індексом i (індексація починається з
нуля) зі словникової множини: int * get_word(struct fdata p, int
i);
Решта інтерфейсних функцій описані у файлі mystand.h.
Для виконання лабораторної роботи користувачеві
надаються такі бази даних:
extern struct fdata **ref_FIRST; //масив посилок на
множини First (A);
k
extern struct fdata **ref_FOLLOW; // масив посилок на
множини Follow (S, A);
k
extern struct flang **ref_LOCAL; // масив посилок на
множини Local (S, A);
k
extern int LLk_LEN; // довжина llk-контексту;
extern int *epsilon, num_epsilon; // список epsilon-нетеp-
міналів;
extern int *netname, numnet; // список нетерміналів
граматики;
extern int *terminal, numtrm; // список терміналів
граматики;
extern struct node *q_grammat; // початок списку правил
граматики;
extern int LL1_USL; // відповідає за LL(1) – умову;
extern char *TABL_LL1_UPR; // таблиця управління
LL(1) – аналізатора.
Число рядків таблиці TABL_LL1_UPR рівне numnet, а
число стовпчиків - numtrm+1. Останній стовпчик таблиці
відповідає ерсилон-слову.
Відмітимо, що довжина масивів ref_FIRST, ref_FOLLOW
та ref_LOCAL - це кількість нетерміналів граматики, а i-й
елемент кожної множини асоціюється з i-м елементом списку
нетерміналів.
37