Page 41 - 4625
P. 41

int prepr_std(q,r)
                  struct node *q;   // список КС-правил
                  struct dnode *r;  // початок хеш-таблиці
               9.  Реалізувати  алгоритм  пошуку  множини  First (A)  для
                                                                    k
            нетерміналів  граматики.  Надрукувати  множини  First (A)  для
                                                                    k
            кожного  нетермінала.  Інтерфейс  виклику  для  реалізації
            функції:
                  int prepr_std(q,r)
                  struct node *q;   // список КС-правил
                  struct dnode *r;  // початок хеш-таблиці
               10. Побудувати LL(1)-граматику для мови програмування
            С. Якщо виконати LL(1)-умову неможливо, то спробуйте для
            деяких правил запропонувати LL(1)- умову. Інтерфейс викли-
            ку для реалізації функції:
                  int prepr_std(q,r)
                  struct node *q;   // список КС-правил
                  struct dnode *r;  // початок хеш-таблиці
               11. Реалізуйте допоміжні функції, які використовують для
            побудови множин First (A);
                                    k
                 функція побудови слова довжиною не більше k символів:
                  int newword(mult,dwor,wrk,len)
                  struct fdata **mult; // масив посилок на скінчені мови
                  short int *dwor;   // масив поточна перестановка індексів
                  слів
                  short int wrk[];  // масив під результуюче слово
                  int len;   // число множин, які перемножаться
                 функція  побудови  нової  перестановки  індексів  для
            словникових множин:
                  int setword(mult,max_dwor,dwor,len)
                  struct fdata **mult;  // масив посилок на скінчені мови
                  int *max_dwor;    // кількість слів у кожній словниковій
                  множині
                  int *dwor;   // поточна перестановка індексів
                  int len;    // число множин, які перемножаться
                  12.  Реалізувати  функцію,  котра  на  основі  контекстів
            First (A)для кожного правила виду A  -> W обчислити значення
                                                  i
                 k
            First (W)-  для  кожної  правої  частини  правила.  Результат
                 k
                                           40
   36   37   38   39   40   41   42   43   44   45   46