Page 39 - 4625
P. 39
5.1. Блок лабораторних робіт № 1
Мета: ознайомитися з методами зберігання КС-грама-
тики в пам'яті ЕОМ для подальшої обробки та запрограмувати
деякі функції доступу/ обробки наведених вище інформацій-
них структур.
1. Реалізувати препроцесор для вводу граматики в ЕОМ.
Препроцесор перетворює послідовність правил текстового
файлу в інформаційну структуру в пам'яті ЕОМ.
Вхідні дані: файл з текстом граматики мови програму-
вання.
Вихідні дані:
машинно-орієнтоване представлення множини КС-
правил граматики;
2. Реалізувати алгоритм пошуку непродуктивних нетер-
міналів. Надрукувати список непродуктивних нетерміналів.
Інтерфейс виклику для реалізації функції:
int prepr_std(q,r)
struct node *q; // список КС-правил
struct dnode *r; // початок хеш-таблиці
Функція повертає результат:
0 - коли непродуктивних нетерміналів немає;
1 - непродуктивні нетермінали в граматиці є.
3. Реалізувати алгоритм пошуку недосяжних нетерміналів.
Надрукувати список недосяжних нетерміналів. Інтерфейс
виклику для реалізації функції:
int prepr_std(q,r)
struct node *q; // список КС-правил
struct dnode *r; // початок хеш-таблиці
Функція повертає результат:
0 - коли недосяжних нетерміналів немає;
1 - недосяжні нетермінали в граматиці є.
4. Реалізувати алгоритм пошуку ліворекурсивних нетер-
міналів. Надрукувати список ліворекурсивних нетерміналів.
Інтерфейс виклику для реалізації функції:
int prepr_std(q,r)
struct node *q; // список КС-правил
struct dnode *r; // початок хеш-таблиці
38