Page 44 - 4625
P. 44

Як допоміжну функцію вводу лексем з текстового файлу
            PL/0-програми  використайте  лексичний  аналізатор  з  PL/0  з
            такою специфікацією:
                  extern char scaner_lexema[ ];   // текст виділеної лексеми
                  extern int lexema_code;   // код лексем
                  int scaner_pl0(void).
                  Текст лексеми заноситься в поле scaner_lexema. Функція
            scaner_pl0  повертає  код  виділеної  лексеми.  Якщо  досягли
            кінця вхідного файла, то функція scaner_pl0 повертає значення
            0(нуль).  Після  закінчення  роботи  синтаксичного  аналізатора
            необхідно  закрити  вхідний  файл  за  допомогою  функції
            scaner_close().
                  5. Реалізувати синтаксичний аналізатор для мови Pascal
            методом  магазинного  автомата.  Для  управління  роботою
            аналізатора  скористайтеся  таблицею  управління  для  LL(1)-
            синтаксичного аналізатора. Інтерфейс виклику для реалізації
            функції:
                  int prepr_std(q,r)
                  struct node *q;   // список КС-правил
                  struct dnode *r;  // початок хеш-таблиці
                  Як допоміжну функцію вводу лексем з текстового файлу
            Pascal-програми використайте лексичний аналізатор з Pascal з
            такою специфікацією:
                  extern char scaner_lexema[ ];   // текст виділеної лексеми
                  extern int lexema_code;   // код лексем
                  int pascal_scaner(void).
                  Текст лексеми заноситься в поле scaner_lexema. Функція
            pascal_scaner()  повертає  код  виділеної  лексеми  в  поле
            lexema_code. Якщо досягли кінця вхідного файла, то функція
            pascal_scaner  ()  повертає  значення  0(нуль).  Після  закінчення
            роботи синтаксичного аналізатора необхідно закрити вхідний
            файл за допомогою функції scaner_close().
                  6. Реалізувати  синтаксичний аналізатор для мови PL/0
            методом  рекурсивного  спуску.  Для  управління  роботою
            аналізатора  скористайтеся  таблицею  управління  для  LL(1)-

                                           43
   39   40   41   42   43   44   45   46   47