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
   34   35   36   37   38   39   40   41   42   43   44