Page 37 - 4625
P. 37
один мета символ, а саме. Правило граматики в текстовому
файлі записується так:
<програма> program ( <список параметрів> ) <блок> .
У пам'яті ЕОМ граматика описується наступними струк-
турами:
struct node { int *pd; // посилка на продукцію
int len; // довжина продукції
int teg; // робоче поле
struct node *next; // посилка на наступну продукцію
struct fdata *cont_llk; // посилка на контекст для правила
} ;
Поле "довжина продукції" визначає кількість елементів
продукції включаючи перший. Елементи продукції (нетер-
мінали та термінали) закодовані цілочисловими даними, таким
чином, що:
Для зберігання словарних множин First k та Follow k
використовується така інформаційна структура:
struct fdata {struct fdata *fnext; //посилка на наступний блок
struct fdata *fnext1; //системне поле - не модифікувати
int rdata[60]; // поле для слів
};
Кожне слово - це послідовність лексем довжиною не
більше k елементів. Якщо одного блоку для зберігання
відповідної множини слів даних не достатньо, то в
подальшому пам'ять виділяється динамічно. Признак кінця
послідовності слів в одному блоці - (-1). Оскільки слова, які
зберігаються у словниковому блоці мають різну довжину, то
на початку кожного слова стоїть його довжина.
Для доступу до закодованих у пам'яті ЕОМ даних
надається ряд інтерфейсних функцій, наприклад:
за кодом лексеми отримати її текст:
36