Вариант 3
(ПАСКАЛЬ) Анализаторы языка, включающего оператор условной передачи управления и оператор присваивания, арифметических выражений и языка право-линейной грамматики
1 Распознаватель описания функций форматного ввода-вывода. Например:
Const A563 :array[1..3,-5..-4] of integer = ((-2,-5),(23,0),(34,12));
2 Провести синтаксический анализ арифметических выражений, переведя его после этого в язык ПОЛИЗ. Реализовать вычисления, используя запись в языке ПОЛИЗ, присвоив переменным фиксированные целые положительные значения.
а:=-корень(b*b-4*b+4)
3 Для право-линейной грамматики создать автомат анализатор, детерминируя исходный автомат грамматики, если продукции грамматики имеют вид:
S—>bА|bВ|bE
А—>аS
B—> bE|aC
С—>b
Часть 1. Лексический и синтаксический анализ конструкций языка Паскаль.
Лексический анализ – это первый этап процесса компиляции. На этом этапе символы, составляющие исходную программу, группируются в отдельные лексические элементы, называемые лексемами.
Лексический анализ важен для процесса компиляции по нескольким причинам:
1) замена в программе служебных слов, идентификаторов, констант, и ограничителей на лексемы делает представление программы более удобным для дальнейшей обработки;
2) лексический анализ уменьшает длину программы и устраняет несущественные пробелы и комментарии;
3) при изменении кодировки в исходном представлении программы, то эти изменения отразятся только на лексическом анализаторе.
Лексический анализатор - это транслятор, входом которого служит цепочка символов, представляющих исходную программу, а выходом – последовательность лексем.
В «паскалеобразном» языке выделяют четыре тип лексем:
1) Служебные слова;
2) Разделители;
3) Идентификаторы;
4) Константы.
Читать дальше