Разработка трехпроходного транслятора с исходного языка на язык ПЛ-1

Автор: Пользователь скрыл имя, 20 Ноября 2012 в 23:12, курсовая работа

Описание работы

Посредством среды разработки «Borland C++ Builder6» осуществляется создание варианта программы-транслятора с одного языка высокого уровня на другой. Созданная программа имеет возможность находить некоторые лексические и синтаксические ошибки, которые могут быть допущены в исходном текстовом файле, предназначенном для трансляции и сообщать о них пользователю.

Содержание

1. Пояснительная записка………………………………………………………..2
1.1. Задание на проектирование…………………………………………..2
1.2. Содержание…………………………………………………...……….3
1.3. Введение………………………………..………………………………4
1.4. Описание процесса решения задачи…………………………………5
1.5. Блок-схемы основной программы и процедур…………………….15
2. Распечатка программных модулей………………………………………….17
3. Описание программы………………………………………………………...39
3.1. Назначение и общее описание программы………………………...39
3.2. Описание логической структуры программы…………………… ..39
3.3. Способ обращения к программе……………………………………40
3.4. Перечень технических средств………………………………… …..40
4. Описание входных и выходных данных……………………………………40
5. Тестовые примеры работы программы………………..……………………41

Работа содержит 1 файл

!!!Отчёт_курсовик.docx

— 114.26 Кб (Скачать)

}

}

 

 

 

//---------------------------------------------------------------------------

   int flagread=0;

void __fastcall TForm1::Button1Click(TObject *Sender)

{

errornumber=0;

enddo=-1;

allnull();

Form1->Memo3->Clear();

Form1->Memo2->Clear();

   char s[80];

READCODE2();

ANALIS();

if(errornumber==0)

GENERATOR();

sprintf( s, "\nИсходный код - vhod.txt"); Form1->Memo3->Lines->Add(s);

sprintf( s, "\nПоследовательность лексем - lexem.txt и lexemdebug.txt");  Form1->Memo3->Lines->Add(s);

sprintf( s, "\nТранслированный код - code.txt");     Form1->Memo3->Lines->Add(s);

 

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button2Click(TObject *Sender)

{

errornumber=0;

enddo=-1;   

allnull();

if (Form1->OpenDialog1->Execute())

{

filename=(Form1->OpenDialog1->FileName).c_str();

}

 

Form1->Memo1->Clear();

Form1->Memo3->Clear();

Form1->Memo2->Clear();

   char s[80];

READCODE();

ANALIS();

if(errornumber==0)

GENERATOR();

sprintf( s, "\nИсходный код - vhod.txt"); Form1->Memo3->Lines->Add(s);

sprintf( s, "\nПоследовательность лексем - lexem.txt и lexemdebug.txt");  Form1->Memo3->Lines->Add(s);

sprintf( s, "\nТранслированный код - code.txt");     Form1->Memo3->Lines->Add(s);

 

}

//---------------------------------------------------------------------------

 

 

 

 

3.  Описание  программы

3.1  Назначение  и общее описание программы

 

Представленная программа  создана для быстрого и удобного транслирования с исходного языка  на язык PL-1.

           Внешний интерфейс программы  позволяет, помимо получения информации  о местоположении исходного файла и полученного оттранслированного файла, увидеть информацию о возникновении ошибки трансляции, кроме того создается файл с лексемами и дополнительный, созданный для отладки файл.

 

3.2 Описание логической  структуры программы

 

   Программа состоит  из:

- основной программы

- описания класса

- функций лексического анализатора

- функций синтаксического анализатора

- функции анализа возникшей ошибки

Основная программа находится  в теле функции события ButtonClick (), и соответственно начинает работать после запуска программы. В ходе своего выполнения, основная программа вызывает в своём теле процедуры лексического анализа (READCODE()), синтаксического анализа(ANALIS()), который вызывает генерацию кода (GENERATOR()) в новом языке программирования в случае отсутствия ошибок.

 

 

 

 

3.3  Способ обращения к программе

 

Для запуска транслятора  следует открыть каталог с  программой и запустить exe-файл двойным кликом мышки по его ярлыку. Либо выбрать этот ярлык клавишами курсора и нажать «ENTER».

После этого появится окно программы. В случае успешной трансляции отображаются все необходимые пути к файлам (с исходным кодом, лексемами и сгенерированном кодом на новом языке). В противном  случае в окне появится перечень ошибок. Исходный код может считываться из файла (верхняя кнопка) либо прямо из окна программы (нижняя кнопка, требуется ввести исходный код в левое поле). Результат сохраняется в файлы и отображается в окне программы (поле справа)

 

3.4  Перечень технических средств.

 

Программа создана в среде  визуального программирования «C++Builder 6». На системе имеющей следующие характеристики:

-процессор Intel Celeron CPU 1.3 GHz;

-оперативная память 2048 Mb;

-операционная система Microsoft Windows 7.

Для успешной работоспособности  программы требуется любой современный  процессор, и операционная среда  от компании Microsoft - Windows любой версии.

 

 

 

 

 

4.  Описание  входных и выходных данных

Входные данные для программы  представляют собой текстовый файл, имеющий формат(*.txt), который содержит текст на данном языке либо введенный в окно программы текст.

Выходные же данные сохраняются  также в текстовый файл формата(*.txt), только файл содержит уже оттранслированный текст на языке PL-1. Кроме этого результат отображается в окне программы.

5.  Тестовые примеры работы программы

Вариант без ошибок

program g;

var u, v, max, min: real;

begin 

read(u,v);

max:=10;

min:=0;

if u>v then

begin 

if u>max then max:=u;

if v<min then min:=v

end

           else 

begin

  if v>max then max:=v;

    if u<min then min:=u 

  end;

write(max,min) 

end.

Контрольный вариант  из задания на проектирование (с ошибками):

program g;

var u, v, max. min: real;

begin

read(u,v);

max:=10;

min:=0;

if u>v then

begin

if u>max then max:=u;

if v<min then min:=v

end

else

begin

if v>max then .max:=v;

if u<min then min:=u

end;

write(max,min)

end.

 

 

 


Информация о работе Разработка трехпроходного транслятора с исходного языка на язык ПЛ-1