Оптимальні програми обчислення виразів
Оптимальні програми обчислення виразів
Тип документу: Курсовая
Сторінок: 28
Предмет: Математика
Автор: Орос Володимир
Розмір: 46.4
Скачувань: 1318
Додаток 2.
Програмна реалізація простого компілятора виразів.
Нижче подано текст програми, написаної для компілятивної обробки [2] арифметичних виразів, записаних в інфіксній формі. Ця програма може бути використана як частина компілятора, котра відповідає за генерацію асемблерного коду для операторів присвоєння.
Особливості даної програми:
однопрохідна генерація коду;
відсутній лексичний сканер, тому всі ідентифікатори включаються в асемблерний код без перевірки;
всі обчислення є цілочисловими;
арифметичні функції не приймають параметрів, а результат повертають в регістрі AX;
розпізнається більшість синтаксичних помилок;
коректно розпізнаються пробіли та символи табуляції у виразі.
Текст програми:
const TAB = ^I;
CR = ^M;
Var Look: Char;
Procedure GetChar;
Begin
Read(Look);
End;
Procedure Error(s: String);
Begin
WriteLn;
WriteLn(^G, 'Помилка : ', s, '.');
End;
Procedure Abort(s: String);
Begin
Error(s);
Halt;
End;
Procedure Expected(s: String);
Begin
Програмна реалізація простого компілятора виразів.
Нижче подано текст програми, написаної для компілятивної обробки [2] арифметичних виразів, записаних в інфіксній формі. Ця програма може бути використана як частина компілятора, котра відповідає за генерацію асемблерного коду для операторів присвоєння.
Особливості даної програми:
однопрохідна генерація коду;
відсутній лексичний сканер, тому всі ідентифікатори включаються в асемблерний код без перевірки;
всі обчислення є цілочисловими;
арифметичні функції не приймають параметрів, а результат повертають в регістрі AX;
розпізнається більшість синтаксичних помилок;
коректно розпізнаються пробіли та символи табуляції у виразі.
Текст програми:
const TAB = ^I;
CR = ^M;
Var Look: Char;
Procedure GetChar;
Begin
Read(Look);
End;
Procedure Error(s: String);
Begin
WriteLn;
WriteLn(^G, 'Помилка : ', s, '.');
End;
Procedure Abort(s: String);
Begin
Error(s);
Halt;
End;
Procedure Expected(s: String);
Begin