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