Page 42 - 4625
P. 42
занести в поле cont-llk для кожної продукції. Інтерфейс
виклику для реалізації функції:
int prepr_std(q,r)
struct node *q; // список КС-правил
struct dnode *r; // початок хеш-таблиці
int prepr_std(q,r)
13. Реалізувати функцію, котра на основі контекстів
First (A) і Follow (A) для нетерміналів обчислить значення
k
k
First (W) + Follow (A) для кожної правої частини продукції
k
k
k
виду A -> W. Результат занести в поле cont_llk для кожної
продукції. Інтерфейс виклику для реалізації функції:
int prepr_std(q,r)
struct node *q; // список КС-правил
struct dnode *r; // початок хеш-таблиці
14. Реалізувати функцію, котра на основі контекстів
First (W) + Follow (A) для кожної правої частини продукції
k
k
k
виду A -> W визначить, чи є граматика сильною LL(k)-
граматикою, зокрема LL(1)-граматикою. Контексти з кожного
правила є у полі cont_llk. Інтерфейс виклику для реалізації
функції:
int prepr_std(q,r)
struct node *q; // список КС-правил
struct dnode *r; // початок хеш-таблиці
15. (це приклад). Реалізувати алгоритм пошуку EPSILON-
нетерміналів. Надрукувати список EPSILON-нетерміналів, а
також правила граматики, які дають вивід виду: А=>*.
Інтерфейс виклику для реалізації функції:
int prepr_std(q,r)
struct node *q; // список КС-правил
struct dnode *r; // початок хеш-таблиці
Функція повертає результат :
0 - коли EPSILON-нетерміналів немає,
1 - коли EPSILON-нетермінали в граматиці є.
41