
- •7. Текст программы конвертора .
- •Курсовая работа
- •Руководитель :
- •Курсовая работа
- •1) Задание на курсовую работу.
- •2) Постановка задачи .
- •3) Внешняя спецификация
- •3.1 Вход
- •3.2 Выход
- •3.3 Аномалии
- •4) Метод решения задачи .
- •5) Описание алгоритма .
- •5.1 Структура данных
- •8. Распечатка тестов и результатов .
- •5.4 Алгоритм открытия файла - GetText
- •5.5 Алгоритм подпрограммы преобразования текста – Translate
2) Постановка задачи .
Дано :
Fname1 - имя входного файла , содержащего текст программы на языке Паскаль ( текст программы разрабатывается в соответствии с вариантом и должен включать различные виды каждого допустимого оператора ).
Требуется :
Fname2 – имя выходного файла , содержащего конвертированный текст программы на языке Си ;
koper1 – число операторов в исходной программе ;
koper2 - число операторов в полученной программе ;
ker - число ошибочных операторов в полученной программе ;
Связь требуемого с исходными данными
№ |
Синтаксис оператора на языке Паскаль |
Синтаксис оператора на языке Си |
1 |
begin |
{ |
2 |
end |
} |
3 |
var
|
. |
4 |
Const A:real=10,5; B,cd:integer=7; |
Const Float a=10,5; Int b,cd=7; |
5 |
v1,v2,v3:real |
float v1,v2,v3; где v1,v2,v3-идентификаторы переменных |
6 |
C1,c2,c3:integer |
int v1,v2,v3; где v1,v2,v3-идентификаторы переменных |
7 |
Ab:array[1..100] of integer Cd:array[1..10] of real |
Int ab[100] Float cd[10] |
8 |
v:=ae |
Оператор присваивания v=ae где ae-арифметическое выражение v –идентификатор переменной |
10 |
For i:=0 to 10 do
For i:=10 downto 0 do |
For (i=0;i<10;i++)
For (i=10;i>0;i--) |
11 |
Read (a,b,c) Readln (d,e) |
Scanf(“%f %f %f”,&a,&b,&c) Scanf(“%f %f”,&d,&e); Printf(“\n”); |
12 |
Function fun(a,b:integer;cd:real):real |
Int fun(int a,b;float cd) |
13 |
(*qwerty*) {qwer ty} |
комментарии: /*qwerty*/ /*qwer ty*/ |
3) Внешняя спецификация
3.1 Вход
Исходный текст программы готовится заранее с помощью текстового редактора и хранится в текстовом файле , имя которого вводится в ответ на запрос программы :
Enter File Name :<имя входного файла>
3.2 Выход
Выходной текст формируется конвертором и запоминается в текстовом файле , имя которого вводится в ответ на запрос программы :
Enter Target File Name :<имя выходного файла>
Основной результат работы программы хранится в выходном файле в виде текста программы , пригодном для компиляции , а также выводится таблица :
число операторов в исходной программе =<число>
число операторов в полученной программе =< число >
число ошибочных операторов =< число >
результат хранится в выходном файле <имя выходного файла>
3.3 Аномалии
При отсутствии входного файла выводится сообщение :
File <имя файла> was not found ! Press any key to continue
При обнаружении ошибки в операторе исходного текста транслятор должен вносить в выходной текст комментарий ,включающий диагностическое сообщение , текст ошибочного оператора , и переходить к обработке следующего оператора .
Возможные ошибки :
№ ошибки |
ее причина |
сообщение |
0 |
без ошибок |
|
2 |
в операторе for |
in for |
3 |
неизвестная причина |
unknown |
4 |
в константах |
in const |
5 |
в массиве |
in array |
6 |
в функции |
in function |
8 |
ошибка в арифметическом выражении |
in assigment |
4) Метод решения задачи .
Идентификация операторов исходного текста осуществляется путем анализа ключевого слова . Если допустимое ключевое слово отсутствует и строка не является комментарием , то предполагается , что соответствующий оператор является оператором присваивания .