Богданов В. С.. Лексический анализатор
.pdfРазработать программу построения функций предшествования по матрице предшествования.
8. Написать синтаксический анализатор на основе рекурсивного спуска, обрабатывающий выражения языка с нижеприведенной грамматикой
E ® TG
G ® +TG êl
T ® FU
U ® хFU êl F ® (E) ê
áидентификаторñ.
В пунктах 9–11 используя приведенный фрагмент языка, являющегося подмножеством Паскаля и множество правил грамматики, приведенной выше, составить грамматику, описывающую данный фрагмент и для нее спроектировать модули синтаксического анализатора и транслятор, используя один из методов (рекурсивного спуска, операторного предшествования, прямые методы трансляции).
9. program NOMER _9; label:10;
var K, J: integer; S: real; begin
read (S); I S = Ø.Ø then goto 1 Ø;
for J : = 1 to 20 do begin
S: = S + J; K :=J end;
10: urite (S) end.
10. program NOMER_10; label 1;
var A, B, C, D: real; I; integer;
Begin
1: real (A, B, C); for I: = Ø to 5Ø Lo
D: = (A *A – 1/C) * B + 20;
If D * D áñ 10.5 then goto 1
else write (D, A, B);
if D á = 20 then goto 1; end.
Примечание. Для вычисления выражения использовать метод Дейкстры. 11. program NOMER_11;
11
label: 20*, 10; var I: integer; X, Y; real, begin
x: = 2.81; Y: + 5.53;
20:if X + 20.0 á = X * 1.5 then goto 10;
for I: = 1 to 50 Lo
Y: = Y * (X + 1.Ø – I); read (X< Y);
goto 2Ø;
10; write (X, Y) end.
12.Описать алгоритмы перевода конструкций языка Турбо-Паскаль в ассемблерный год
1.Оператор присваивания.
2.Указатель функции.
3.Операторы процедуры и циклические.
Примечание. Использовать возможности системы Турбо-Паскаль (Lebugger).
13.Описать алгоритмы перевода и представить фрагменты на языке ассемблера, используя возможности системы Турбо-Паскаля, для следующих элементов языка.
2.1.Описания констант, переменных массивов;
2.2.Операторов ввода-вывода;
2.3. Операторов цикла.
Примечание. Использовать отладчик.
14. Разработать интерпретатор для команд и работы с каталогами и файлами для некоторой ОС. Формат команд такой же, как в MS DOS.
12
Библиографический список
1.Гордеев А.В., Молчанов А.Ю. Системное программное обеспечение. Питер, 2001, 786 с.
2.Лебедев В.Н. Введение в системы программирования. М.: Статистика, 1975. 312 с.
3.Хопгуд Ф. Методы компиляции. М.: Мир, 1982.
4.Хантер Р. Проектирование и конструирование компиляторов: Пер. с англ./ Предисл. В.М. Савинкова. М.: Финансы и статистика, 1984. 232 с.
5.Зелковец М., Шоу А., Гэннон Дж. Принципы разработки программного обеспечения: Пер. с англ. М.: Мир, 1982. 368 с.
6.Теория языков программирования и методы трансляции. Методические указания / Рязан. Гос. радиотехн. Акад.; Сост. В.С. Богданов, Рязань, 2003. 48 с (№ 3435).
13
