Основні типи аналізу виразів
Поняття лексичної згортки. Інтерпретативний і компілятивний підходи. Лексичний, синтаксичний і семантичний методи аналізу. Постфіксна форма арифметичного виразу. Обробка довільного символу. Перевірка правильності виразів. Оцінка складності алгоритмів.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | украинский |
Дата добавления | 23.11.2017 |
Размер файла | 75,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Begin
Emit(s);
WriteLn;
End;
Procedure Ident;
Var Name: String[8];
Begin
Name:= GetName;
If Look = '(' Then Begin
Match('(');
Match(')');
EmitLn('CALL ' + Name);
End
Else
EmitLn('MOV ' + Name + ',AX');
End;
Procedure Expression; Forward;
Procedure Factor;
Begin
If Look = '(' Then Begin
Match('(');
Expression;
Match(')');
End
Else If IsAlpha(Look) Then
Ident
Else
EmitLn('MOV ' + GetNum + ',AX');
End;
Procedure Multiply;
Begin
Match('*');
Factor;
EmitLn('POP DX');
EmitLn('MUL AX,DX');
End;
Procedure Divide;
Begin
Match('/');
Factor;
EmitLn('POP DX');
EmitLn('DIV DX,AX');
EmitLn('MOV DX,AX');
End;
Procedure Term;
Begin
Factor;
While Look In ['*', '/'] Do Begin
EmitLn('PUSH AX');
Case Look Of
'*': Multiply;
'/': Divide;
End;
End;
End;
Procedure Add;
Begin
Match('+');
Term;
EmitLn('POP DX');
EmitLn('ADD AX,DX');
End;
Procedure Subtract;
Begin
Match('-');
Term;
EmitLn('POP DX');
EmitLn('SUB DX,AX');
EmitLn('MOV DX,AX');
End;
Procedure Expression;
Begin
If IsAdDop(Look) Then
EmitLn('XOR AX,AX')
Else
Term;
While IsAdDop(Look) Do Begin
EmitLn('PUSH AX');
Case Look Of
'+': Add;
'-': Subtract;
End;
End;
End;
Procedure Assignment;
Var Name: String[8];
Begin
Name := GetName;
Match('=');
Expression;
EmitLn('MOV AX,' + Name);
End;
Procedure Init;
Begin
GetChar;
SkipWhite;
End;
Begin
WriteLn('Введіть оператор присвоєння');
Init;
WriteLn('Результуючий код на асемблерi');
Assignment;
If Look <> CR Then Expected('Новий рядок');
End.
Приклади роботи програми.
Приклад 1.
Введiть оператор присвоєння
a=123*(b+e)-func33()/3
Результуючий код на асемблерi
MOV 123,AX
PUSH AX
MOV B,AX
PUSH AX
MOV E,AX
POP DX
ADD AX,DX
POP DX
MUL AX,DX
PUSH AX
CALL FUNC33
PUSH AX
MOV 3,AX
POP DX
DIV DX,AX
MOV DX,AX
POP DX
SUB DX,AX
MOV DX,AX
MOV AX,A
Приклад 2.
Введiть оператор присвоєння
Variable=Val1*Val2+Stat() - 11 / epsilon
Результуючий код на асемблерi
MOV VAL1,AX
PUSH AX
MOV VAL2,AX
POP DX
MUL AX,DX
PUSH AX
CALL STAT
POP DX
ADD AX,DX
PUSH AX
MOV 11,AX
PUSH AX
MOV EPSILON,AX
POP DX
DIV DX,AX
MOV DX,AX
POP DX
SUB DX,AX
MOV DX,AX
MOV AX,VARIABLE
Приклад 3.
Введiть оператор присвоєння
RESULT=(MAX-MIN)*(-3/LENGTH)
Результуючий код на асемблерi
MOV MAX,AX
PUSH AX
MOV MIN,AX
POP DX
SUB DX,AX
MOV DX,AX
PUSH AX
XOR AX,AX
PUSH AX
MOV 3,AX
PUSH AX
MOV LENGTH,AX
POP DX
DIV DX,AX
MOV DX,AX
POP DX
SUB DX,AX
MOV DX,AX
POP DX
MUL AX,DX
MOV AX,RESULT
Приклад 4.
Введiть оператор присвоєння
OUT=IN+10*(value()
Результуючий код на асемблерi
MOV IN,AX
PUSH AX
MOV 10,AX
PUSH AX
CALL VALUE
Помилка: ')' Очiкується.
Приклад 5.
Введiть оператор присвоєння
Size=Long*Wide+X-
Результуючий код на асемблерi
MOV LONG,AX
PUSH AX
MOV WIDE,AX
POP DX
MUL AX,DX
PUSH AX
MOV X,AX
POP DX
ADD AX,DX
PUSH AX
Помилка: Цiле число Очiкується.
Размещено на Allbest.ur
Подобные документы
Характеристика та класифікація регулярних виразів, їх сутність за теоріями автоматів та формальних мов, використання в електронній обробці текстів. Представлення символів за їх кодами. Скорочене позначення символьних класів, поняття квантифікації.
реферат [48,9 K], добавлен 09.06.2012Методи аналізу та засоби забезпечення надійності, що використовуються при проектуванні програмного забезпечення. Основні види складності. Якісні та кількісні критерії. Ієрархічна структура. Попередження помилок. Реалізація статичної і динамічної моделей.
реферат [128,2 K], добавлен 20.06.2015Статистичний огляд ринку праці в ІТ-галузі в Україні. Математичні, економетричні методи, моделі в аналізу ІТ-ринку праці. Оцінка людського капіталу. Динаміка оплати праці за декілька останніх років. Структура вакансій розробників програмного забезпечення.
дипломная работа [457,3 K], добавлен 12.10.2015Поняття та основні властивості алгоритму. Реалізація програми здійснюється за допомогою написаного раніше тексту (вихідного коду). Особливості середовища програмування Турбо Паскаль. Питання синтаксичної правильності та самодокументованості тексту.
практическая работа [1023,8 K], добавлен 03.07.2014Розробка програми на мові програмування Асемблер для обчислення виразу. Розрахунок значень А, В, С у процедурах. Аналіз отриманих результатів за допомогою відлагоджувальника Turbo Debugger при різних заданих значеннях та перевірка їх правильності.
лабораторная работа [203,4 K], добавлен 09.01.2013Вирішення задач сортування в програмуванні та розробка ефективних алгоритмів сортування. Знайомство з теоретичним положенням, що стосуються методів сортування файлів, реалізації їх на мові програмування Turbo Pascal. Методи злиття впорядкованих серій.
курсовая работа [46,9 K], добавлен 16.09.2010Комплексна обробка просторово-розподілених ресурсів мережі Інтернет. Системи інформаційного моніторингу в мережі. Обґрунтування технологій, розробка системи інтеграції Інтернет-контенту для конкурентного середовища ринку праці. Оцінювання систем аналізу.
дипломная работа [763,8 K], добавлен 14.07.2013Системний аналіз. Розширена вхідна і вихідна функції мережі Петрі. Зображення граф мережі Петрі, дерева досяжності глибини 3. Написання програми, яка повинна шукати розширену вхідну і вихідну функції за вхідними даними і будувати дерево досяжності.
контрольная работа [233,3 K], добавлен 14.03.2010Поняття метричного простору. Збіжність в метричних просторах. Збереження зв’язності при неперервних відображеннях. Приклади повних метричних просторів. Поняття диференційовної функції. Необхідні умови диференційовності. Частинні похідні вищих порядків.
дипломная работа [1,2 M], добавлен 23.08.2012Принцип роботи СТО. Аналіз існуючих теоретико-практичних розробок по створенню інформаційних систем. Модель аналізу виконання робіт з ремонту й обслуговування на СТО. Розробка автоматизованої системи обробки інформації, опис програмного забезпечення.
дипломная работа [1,3 M], добавлен 11.10.2013