Разработка транслятора с языка PROST на язык С++. Руководство оператора

Страницы работы

Содержание работы

Министерство образования и науки Российской Федерации

УТВЕРЖДАЮ

руководитель работы

_____________________ А.Н. Петрова

«_____ »__________________ 2007 г.

Разработка транслятора с языка PROST на язык С++.

Руководство оператора

02067988.2301071 – 03 34

Бумажный носитель

Исполнитель

_____________________  А.Н. Беляев

«_____ »___________________ 2007 г.


УТВЕРЖДЕН

02067988.2301071 – 03 34 - ЛУ

Разработка транслятора с языка PROST на язык С++.

Руководство оператора

02067988.2301071 – 03 34

Бумажный носитель

7

 
 


Листов ______


Аннотация

Данный документ содержит описание действий оператора при работе с программой.
Содержание

4.1. Назначение................................................................................................................ 47

4.2. Условия эксплуатации............................................................................................. 47

4.3. Порядок работы......................................................................................................... 47

4.4. Сообщения оператору об ошибках......................................................................... 50


4.1. Назначение

Данная программа является транслятором с языка PROST на язык С++.

4.2. Условия эксплуатации

Для работоспособности программы необходимы:

1). технические средства – компьютер, содержащий:

·  процессор не ниже i268

·  свободная оперативная память не меньше 64Kb

2). программное обеспечение:

·  операционная система семейства Windows – 9x/ME/NT/2000/XP или MS-DOS версии не ниже 5.0

Для запуска программы необходимо запустить файл с названием Lex.exe.

4.3. Порядок работы

Описание языка программирования приводится ниже,  и оно выполнено в БНФ.

<digit> ::= 0|1|2|3|4|5|6|7|8|9

<letter> ::= A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|

a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z

<delim> ::=(  | ) |; | + | - | *  |/ | < | > | <= | >= | <> | := | = |.

<digits>::=<digits> | <digits> <digits>              

<floats> ::= <digits>.<digits> | <digits> | <digits> <intc> ::= <digits>

<strchar> ::= <любые символы кроме перевода строки и кавычки >

<strchsrs> ::= <strchar> | <strchar> <strchars>

<strc> ::= <strchars> ‘ | ‘ ‘

<const> ::= <floatc> | <intc> | <strc>

<idchar> ::= <digit> | <letter>

<idchars> ::= <idchar> | <idchar> <idchars>

<identifer> ::= <letter>

<identifer> ::= <letter> <idchars>

<type> ::= integer | float | label

<vardef> ::= <identiger> as <type> ;

<vardefs> ::= <vardef> | <vardef> <vardefs> | end

<defs> ::= vars <vardefs>

<unop> ::= <binop> ::= +|-|*|/

<condition> ::= <|>|<=|>=|<>|=

<expression> ::= <const> | <ex> | <identifer> | (<expression>)

<ex> ::= <unop> <expression>

<ex> ::=  < expression > <binop> <expression>

<op_assignment> ::= <identifer> := < expression > ;

<op_input> ::= input <identifer> ;

<op_outputn> ::= outputn < expression> ;

<op_outputs> ::= outputs <strc> ;

//Цикл пока

<op_while> ::= while (  < expression > <condition> < expression> ) do <operators>

//Оператор условия

<op_if> ::= if (  < expression > <condition> < expression> ) then <operators>

<op_if> ::= if (  < expression > <condition> < expression> ) then <operators> else

<operators>

//Цикл для

<op_for> ::= for ( <operator> ; < expression > <condition> < expression> ; <operator> ) <operators>

//Оператор множественного выбора

<op_switch> ::= switch ( <expression> ) <switch_body>

<switch_body> ::= <switch_statement> |  <switch_statement> <switch_body> | end

<switch_statement> ::= case (<expression> ) <operators>

//Оператор метка

<op_label> ::= label <identifer> ;

//Операторы перехода

<op_goto> ::= goto <identifer> ;

<op_break> ::= break ;

<op_continue> ::= continue ;

<op_call> ::= call < identifer > ;

<op_return> ::= return ;

<operator> ::= <op_assignment> | <op_input> | <op_outputn> | <op_outputs> | <op_switch> | <op_goto> | <op_label> | <op_for> | <op_vibor>

<operators> ::= <operator> | <operator> <operators> | end

<code>::= code <operators>

<program> ::= <defs> <code> ;

После загрузки программы можем посмотреть файл в проекте prost.txt

Пользователю рекомендуется следующий порядок действия действий :

·  запуск программы;

·  просмотр файла out_cpp.cpp;

Файл  in_prost.txt  с исходной программой приведен ниже:

vars

dim i as integer;

dim j as integer;

end

code

outputs 'i =';

input i;

outputs '\ni/2 =';

outputn i/2;

j:=0;

outputs '\n\nj =';

while(j<i)

do

j:=j+1;

if (j>i/2) then break;end

else

outputn j;continue;

end

end  

outputs '\n\nThe end...';

end;

В результате работы транслятора сгенерирован объектный файл out_cpp.cpp:

#include <conio.h>

#include <iostream.h>

void main(void)

{

clrscr();

int i;

int j;

cout<<"i =";

cout<<"\n>>: ";

cin>>i;

cout<<"\ni/2 =";

cout<<"\n<<: "<<i/2;

j = 0;

cout<<"\n\nj =";

while(j<i){

j = j+1;

if(j>i/2){  break;

}

else {

cout<<"\n<<: "<<j;

continue;

}

}

cout<<"\n\nThe end...";

getch();

}

Программа out_cpp.exe .  На Рис. 1 показан результат работы программы:

    

Рис. 1. Результат работы программы.

4.4. Сообщения оператору об ошибках

При работе программы могут возникнуть следующие сообщения об ошибках:

·  не идентифицируется ключевое слово в строке– данная ошибка возникает, если ключевого слово тестируемого файла нет в файле Lex.cpp;

·  сообщение о том, что разделитель не представлен в таблице.

·  синтаксические ошибки, связанные с неправильным оформлением программы на языке PROST

·  несоответствие версий операционной системы – данная ошибка возникает,  если на вашем компьютере установлена операционная система  не соответствующая описанным выше требованиям;

·   сообщение о том, что какое-либо прерывание, используемое в программе, занято – данное сообщение возникает, если одна из установленных на компьютере резидентных программ уже использует данное прерывание.

Похожие материалы

Информация о работе

Предмет:
ТЯПиМТ
Тип:
Методические указания и пособия
Размер файла:
68 Kb
Скачали:
0