Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсак з СПЗ.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
816.84 Кб
Скачать

Повне дерево граматичного розбору

Результат роботи генератора коду:

.586

.model flat, C ,stdcall

option casemap: none

include c:\masm32\include\msvcrt.inc

includelib c:\masm32\lib\msvcrt.lib

include c:\masm32\include\kernel32.inc

includelib c:\masm32\lib\kernel32.lib

.data

. . .

.code

start:

mainmodule proc

. . .

mainmodule endp

Plus proc

. . .

Plus endp

Minus proc

. . .

Minus endp

Mult proc

. . .

Mult endp

Divd proc

. . .

Divd endp

ModOp proc

. . .

ModOp endp

EQUALOP proc

. . .

EQUALOP endp

NOTEQUALOP proc

. . .

NOTEQUALOP endp

GREATEROP proc

. . .

GREATEROP endp

LESSOP proc

. . .

LESSOP endp

NOTOP proc

. . .

NOTOP endp

OROP proc

. . .

OROP endp

ANDOP proc

. . .

ANDOP endp

ASSOP proc

. . .

ASSOP endp

Read proc

. . .

Read endp

PushVar proc

. . .

PushVar endp

IsInit proc

. . .

IsInit endp

PushNum proc

. . .

PushNum endp

NotInitErr proc

. . .

NotInitErr endp

DivBy0Err proc

. . .

DivBy0Err endp

OverFlowErr proc

. . .

OverFlowErr endp

InputErr proc

. . .

InputErr endp

ErrorEnd proc

. . .

ErrorEnd endp

end start

4. Опис інтерфейсу та інструкції користувача

Програма транслятор має простий інтерфейс SDI. Стандартне меню з командами збереження (Ctrl+S), відкриття (Ctrl+O), створення нового файлу (Ctrl+N). Також тут є меню з командами виконання всіх фаз трансляції і компіляції(F5). Меню довідки містить команду показу вікна з інформацією про програму. Головна робоча область складається з поля введення тексту і поля зі списком помилок.

Рис. 4.1 Середовище розробки мови Z30.

Рис. 4.2 Користувацькі меню середовища розробки.

5. Відлагодження та тестування програми

Відлагодження програми відбувається в покроковому режимі в середовищі Microsoft Visual Studio 2010 з використанням точок зупинки, що дає можливість знайти місце логічної помилки. В покроковому режимі у нас є можливість прослідкувати за значеннями змінних.

Тестування програми буде відбуватися з допомогою готових прикладів на вхідній мові в яких можуть використовуватися різноманітні оператори вхідної мови, можуть бути допущені різноманітні лексичні, граматичні та синтаксичні помилки.

5. 1. Виявлення лексичних помилок

На етапі лексичного аналізу виникають наступні помилки: Нерозпізнана лексема – це помилка яка може виникнути на етапі лексичного аналізу, коли лексема відповідає регулярному виразу лексичної помилки. Завеликий числовий літерал – це помилка яка може виникнути на етапі лексичного аналізу, коли числовий літерал є завеликим для типу Integer_4. Коли виникає будь-яка помилка, то вона записується в глобальний список помилок.

Виявлені лексичні помилки можуть підсвічуватися в редакторі після виконання лексичного аналізу (рис. 6).

startprogram

startblock

variable n >> 0 integer_4;

write "n = ";

read n;

dfhfhf;

if n !> 0

startblock

write "n is positive";

endblock

else

startblock

write "n is negative";

endblock

endblock

Рис. 5.1 Виявлення лексичних помилок.