Министерство образования и науки Российской Федерации
УТВЕРЖДАЮ руководитель работы _____________________ А.Н. Петрова «_____ »__________________ 2007 г. |
Разработка транслятора с языка PROST на язык С++.
Руководство оператора
02067988.2301071 – 03 34
Бумажный носитель
Исполнитель _____________________ А.Н. Беляев «_____ »___________________ 2007 г. |
УТВЕРЖДЕН
02067988.2301071 – 03 34 - ЛУ
Разработка транслятора с языка PROST на язык С++.
Руководство оператора
02067988.2301071 – 03 34
Бумажный носитель
|
Листов ______
Аннотация
Данный
документ содержит описание действий оператора при работе с программой.
Содержание
4.1. Назначение................................................................................................................ 47
4.2. Условия эксплуатации............................................................................................. 47
4.3. Порядок работы......................................................................................................... 47
4.4. Сообщения оператору об ошибках......................................................................... 50
Данная программа является транслятором с языка PROST на язык С++.
Для работоспособности программы необходимы:
1). технические средства – компьютер, содержащий:
· процессор не ниже i268
· свободная оперативная память не меньше 64Kb
2). программное обеспечение:
· операционная система семейства Windows – 9x/ME/NT/2000/XP или MS-DOS версии не ниже 5.0
Для запуска программы необходимо запустить файл с названием Lex.exe.
Описание языка программирования приводится ниже, и оно выполнено в БНФ.
<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. Результат работы программы.
При работе программы могут возникнуть следующие сообщения об ошибках:
· не идентифицируется ключевое слово в строке– данная ошибка возникает, если ключевого слово тестируемого файла нет в файле Lex.cpp;
· сообщение о том, что разделитель не представлен в таблице.
· синтаксические ошибки, связанные с неправильным оформлением программы на языке PROST
· несоответствие версий операционной системы – данная ошибка возникает, если на вашем компьютере установлена операционная система не соответствующая описанным выше требованиям;
· сообщение о том, что какое-либо прерывание, используемое в программе, занято – данное сообщение возникает, если одна из установленных на компьютере резидентных программ уже использует данное прерывание.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.