Разработка компилятора модельного языка. Отчет. Пояснительная записка гоу огу 230105. 60. 11. 06 O руководитель работы Ишакова Е. Н. " " 2011г. Исполнитель
Скачать 1.59 Mb.
|
Приложение БПримеры программ на модельном языке Программа, выводящая сумму введённых чисел. { a, b:integer; read(a); read(b); write(a+b) } Наибольшее из введенных. { a,b:integer; read(a); read(b); if a>b then write(a) else write(b); } Программа нахождения факториала введённого числа. { a,i,f:integer; i ass 2; f ass 1; while i [ f ass f*I:i ass i+1 ]; write(f); } Проверка введённого числа на простоту. { n:integer; read(n); ost:integer; prime:boolean; prime ass true; for i ass 2 to n/2 do [ /* коментарий */ ost ass n: while ost>i do ost ass ost-i: if ost=0 then prime ass false ]; if prime then write(true) else write(false); } Программа вычисляющая среднее арифметическое чисел. { k, n, sum:integer; read(n); sum ass 0; i ass1; while i<=n do [ read(k): sum ass sum+k: k ass k+1 ] write(sum/n) } Приложение ВЦепочка вывода и дерево разбора Построим цепочку вывода и дерево разбора простейшей программы на модельном языке из начального символа грамматики. Программа: { I:integer; i as 2+1; write(i); } Цепочка вывода: S => {Op1 } => {O1;Op1 } =>{T I1; Op1} => { integer I; Op1} => { integer Ba; Op1} => { integer i; Op1} => { integer i; Op;Op1} => { integer i; Opr;Op1} =>{ integer i; I as V;Op1} => { integer i; Ba as V;Op1} => { integer i; i as V;Op1} => { integer i; i as O;Op1} => { integer i; i as S+O;Op1} => { integer i; i as М+O; Op1} => { integer i; i as Cn+O;Op1} => { integer i; i as Int+O;Op1} => { integer i; i as I10+O;Op1} => { integer i; i as C+O;Op1} => { integer i; i as 2+O;Op1} => { integer i; i as 2+S;Op1} => { integer i; i as 2+М;Op1} => { integer i; i as 2+Cn;Op1} => { integer i; i as 2+Int;Op1} => { integer i; i as 2+I10;Op1} => { integer i; i as 2+C;Op1} => { integer i; i as 2+1;Op1} => { integer i; i as 2+1;Op ;} => { integer i; i as 2+1;Oout;} => { integer i; i as 2+1; write(I1);} => { integer i; i as 2+1; write(Ba);} => { integer i; i as 2+1; write(i);} Дерево разбора: Приложение ГПримеры таблиц идентификаторов и двуместных операций Таблица 12 – Таблица идентификаторов на этапе семантического анализа
Таблица 13 – Таблица двуместных операций
|