Построение формального языка L

Построение формального языка L WHILE AB FUNCTION PAR , PAR , WHILE - входной терминальный символ AB - условное выражение FUNCTION - некоторая функция, которая может отсутствовать PAR - параметры функции, которые тоже могут отсутствовать Пример правильного синтаксиса WHILEA 44 b5667 clrscr A 44 b5667 - условное выражение clrscr - функция, без параметров Подбор грамматики GZ по языку L Любая грамматика, к примеру GZ, содержит следующие базисные элементы Vt, Vn, Z, P, где Vt - словарь терминальных символов Vn - словарь нетерминальных символов Z - начальный нетерминальный символ P - множество правил вывода G оператор 1. Оператор while AB Функция 2. AB T AB T AB T AB T AB T AB T 3. T O TO TO TO T-O TO 4. O AB IDENT ЦБЗ IDENT ББЦ 6. ЦБЗ ЦЦ 7. IDENT PAR , PAR 8. PAR IDENT ЦБЗ Классификация GZ G оператор 1. Оператор while AB Функция 2. AB T AB T AB T AB T AB T AB T 3. T O TO TO TO T-O TO 4. O AB IDENT ЦБЗ IDENT ББЦ 6. ЦБЗ ЦЦ 7. IDENT PAR , PAR 8. PAR IIDENT E ЦБЗ F PAR G Сделаем замену терминальных символов WHILE a b c d Ц f Б g , h GZ 1. Z abAcDd 2. A BA BA BA B A B A B 3. B C BC BC BC B-C BC 4. C bAc E F 5. E ggf 6. F ff 7. D EbGhGc 8. G E F Вывод GZ - контекстно-свободная грамматика.

Выбор метода анализа Хотя однозначность в общем случае для контекстно-зависимых грамматик не доказана, ее использование возможно для грамматик в которых однозначность очевидна.

Наиболее хорошо разработанным методом анализа, для данного типа грамматик является, метод рекурсивного спуска.

Диагностика и нейтрализация ошибок Разработанный алгоритм относится к общеизвестному методу синтаксического разбора, предложенный Айронсом. Основная идея метода состоит в том, что по контексту без возврата отбрасываются те символы, которые привели в тупиковую ситуацию и разбор продолжается.

Приведем пример синтаксического разбора While A cls 1.

Z abAcDd

Z abAcDd 2.

A BA BA BA B A B A B

A BA BA BA B A B A B 3. B C BC BC BC B- C BC 4.

C bAc E F

C bAc E F 5. E ggf 6. F ff 7.

D EbGhGc

include stdio.h include stdlib.h include string.h include ctype.h incl... Заголовочные файлы. Обрабатываем строчку - Whilea cls Найден While проверка началась с сим... PAR - IDENT ЦБЗ rn ifn 3 cprintfn ЯЗЫК ОПЕРАТОРАnnnrr cprintf WHILEAB ... оператор - WHILE AB FUNCTION nrr cprintf 2.

Список литературы 1. Д. Грис Конструирование компиляторов для цифровых вычислительных машин.

М Мир, 1975. 2. Лебедев В.Н. Введение в системы программирования.

М Статистика, 1975. 3. Шорников Ю.В Шегал Б.Р. Методическое пособие для выполнения курсовой работы по системному программированию.

Новосибирск, 1992.