Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Блок №2 лабораторних робіт



Реалізація LL(k) - синтаксичного аналізатора для відомих мов програмування.

1. Реалізувати функцію, котра для граматики обчислить множини , такі що:

LOCAL(S,A)={ L | S=>*xAw, L=FIRSTk(w) при відповідних x и w }

Інтерфейс виклику для реалізації функції:

int prepr_std(q,r)

struct node *q; // список КС-правил

struct dnode *r; // початок хеш-таблиці

2. Реалізувати функцію, котра на основі множин перевіряє, чи є граматика LL(k)- граматикою (k > 1). Інтерфейс виклику для реалізації функції:

int prepr_std(q,r)

struct node *q; // список КС-правил

struct dnode *r; // початок хеш-таблиці

3. Реалізувати функцію, котра на основі контексту +k для кожної правої частини продукції виду A -> W (результат знаходиться в полі cont_llk для кожної продукції) будує таблицю управління для LL(1)- синтаксичного аналізатора. Інтерфейс виклику для реалізації функції:

int prepr_std(q,r)

struct node *q; // список КС-правил

struct dnode *r; // початок хеш-таблиці

4. Реалізувати синтаксичний аналізатор для мови PL/0 методом магазинного автомата. Для управління роботою аналізатора скористайтеся таблицею управління для LL(1)-синтаксичного аналізатора. Інтерфейс виклику для реалізації функції:

int prepr_std(q,r)

struct node *q; // список КС-правил

struct dnode *r; // початок хеш-таблиці

Як допоміжну функцію вводу лексем з текстового файлу 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)-синтаксичного аналізатора. Інтерфейс виклику для реалізації функції:

int prepr_std(q,r)

struct node *q; // список КС-правил

struct dnode *r; // початок хеш-таблиці

Як допоміжну функцію вводу лексем з текстового файлу 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().

7. Реалізувати синтаксичний аналізатор для мови 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().

8. Реалізувати методом магазинного синтаксичний аналізатор мови програмування С. Врахувати, що на вхід синтаксичного аналізатора поступає програма після обробки препроцесором. Інтерфейс виклику для реалізації функції:

int prepr_std(q,r)

struct node *q; // список КС-правил

struct dnode *r; // початок хеш-таблиці

9. Реалізувати методом магазинного синтаксичний аналізатор мови програмування TURBO PASCAL 5.xx. Врахувати, що на вхід синтаксичного аналізатора поступає програма після обробки препроцесором. Інтерфейс виклику для реалізації функції:

int prepr_std(q,r)

struct node *q; // список КС-правил

struct dnode *r; // початок хеш-таблиці





Дата публикования: 2015-04-06; Прочитано: 425 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...