Конвертер с одного языка высокого уровня на другой
Муниципальное образовательное учреждение
высшего профессионального образования
Южно-Уральский
Кафедра «Информатика и вычислительная техника»
Курсовая работа
по дисциплине СД.ДС.Ф.4 Системное программное обеспечение
специальности 230105.65 «Программное обеспечение вычислительной техники и автоматизированных систем»
Челябинск
2012
Содержание:
1. Описание задания для курсового проекта
2. Постановка задачи
2.1 Название задачи
2.2 Описание
2.4 Входные данные
2.5 Выходные данные
2.6 Ошибки
3. Выбор метода решения
4. Описание функций и переменных транслятора
5. Разработка алгоритма
6. Кодирование алгоритма программы транслятора на языке Си++
7. Распечатка тестов и результатов
8. Выводы
9. Список использованной литературы
Описание задания для курсового проекта.
Тема: «Конвертер
с одного языка высокого
2. Постановка задачи
2.1 Название задачи
Решаемой задачей на данный курсовой проект является создание компилятора, транслирующего исходный файл, с текстом на зыке Паскаль в выходной файл с текстом на языке Си, включающий в себя перевод обозначенных заданием операторов, комментарий, типа переменных и обозначения всех ошибочных операторов.
Данная задача
актуальна из-за некоторых
2 Описание
Данная программа
включается в себя использовани
Сама программа
будет реализовывать
- чтение из исходного
файла – весь файл
-проверка строки на ключевые слова, описанные как массив ключевых слов;
-проверка на функции;
-проверка на операторы;
-проверка на комментарии;
|-вывод текста в выходной файл: число операторов в исходной программе, число операторов в полученной программе, число |
|ошибочных операторов в
Адрес исходного и выходного файла вводятся пользователем с клавиатуры.
3 Входная информация
По заданному условию путь к исходным данным задает пользователь. Файл будет иметь формат текста (txt), однако разрешение файла указывать не обязательно.
Заданный адрес
будет обрабатываться
printf("Имя исходного файла:");
scanf("%s",s);
где s- массив типа char.
4 Выходная информация
Данные будут записываться в выходной файл, который задает пользователь в начале работы программы. Файл имеет текстовое расширение и содержит:
-модуль #include - как статичный элемент разработки программ;
-название программы;
- сообщения об ошибках на месте неопознанных операторов;
-определенные по условию операторы (If Le Then, New, dispose, указатель(на запись))-переменные типа integer;
-арифметические конструкции;
-логические конструкции;
-объявление главной программы;
-замену begin, end на {,};
-присутствующие в исходном
Пробелами в выходном файле пренебрегли.
К выходным данным так же
будут относится, данные
printf("\nКоличество
" в исходной программе: %d", koper1);
printf("\nКоличество операторов"
" в полученной программе: %d", koper2);
printf("\nКоличество ошибочных операторов"
" в полученной программе: %d", ker);
printf("\n\nФайл с результатом: %s",s);
где:
koper1 –количество операторов в исходном файле
koper2 – количество операторов в выходном файле
ker – количество ошибок
s –имя выходного файла
5 Ошибки
При работе с
данной программой
- неправильное имя исходного файла:
printf("Имя исходного файла:");
scanf("%s",s);
if (!GetText(s))
{ printf("\nОшибка открытия файла!"); }
- неправильное имя входного файла:
printf("\nИмя выходного файла:");
scanf("%s",s);
if (!PutText(s))
{ printf("\nОшибка создания файла!");
}
В обоих случаях
происходит выход из программы.
3. Метод решения задачи
Данный этап включает в себя описания логической и математической модели решения задачи, и словесное описание модели в виде плана действий.
Опишем логическую
и математическую модель
[pic]
Пусть мы имеем некое выражение Le1, проверим его по нашей логической модели получения данных:
- Проверка является ли выражение Le1 знаком =, , >, >=, s,&instr[inpos],slen)) return 0;
p = p->next;
}
np = new var;
memcpy(np->s,&instr[inpos],
np->s[slen]=0;
np->tp = -1;
if (gl) {
np->next = vars;
vars = np;
} else {
np->next = lvars;
lvars = np;
}
return 1;
}
int addnestype()
{
types *head=typeslist, *ntype;
while (head) {
if (strlen(head->s)==slen&&
!memcmp(head->s,&instr[inpos],
head = head->next;
}
ntype = new types;
memcpy(ntype->s,&instr[inpos],
ntype->s[slen]=0;
ntype->tid = uvars;
uvars++;
ntype->next = typeslist;
typeslist = ntype;
return 1;
}
int uvart()
{
types *head=typeslist;
while(head)
{
if (strlen(head->s)==slen&&
!memcmp(head->s,&instr[inpos],
head = head->next;
}
return 0;
}
char* utname(int number)
{
types *head=typeslist;
while(head)
{
if (head->tid==number) return head->s;
head = head->next;
}
return 0;
}
void newtype(int gl, int type){
var *p;
if (gl) p = vars; else p = lvars;
while (p) {
if (p->tp==-1) p->tp = type;
p = p->next;
}
}
int vartype(){
var * p;
p = lvars;
while (p) {
if (strlen(p->s)==slen&&
!memcmp(p->s,&instr[inpos],
p = p->next;
}
p = vars;
while (p) {
if (strlen(p->s)==slen&&
!memcmp(p->s,&instr[inpos],
p = p->next;
}
return 0;
}
char* usertype()
{
types * p;
p = typeslist;
while (p) {
if (strlen(p->s)==slen&&
!memcmp(p->s,&instr[inpos],
p = p->next;
}
}
void Ocvobw(int gl){
var *p, *pp;
p = lvars;
while (p) {
pp = p;
p = p->next;
delete pp;
}
lvars = NULL;
if (gl) {
p = vars;
while (p) {
pp = p;
p = p->next;
delete pp;
}
vars = NULL;
}
}
int Analiz()
{
int st = 0;
char c;
slen = 0;
while (slen+inpos='A' && c='a' && c='0' && c
7 литература
Основная:
- Молчанов А.Ю. Системное программное обеспечение. Лабораторный практикум. – СПб.: Питер, 2005. – 284 с.: ил.
Дополнительная:
- Гордеев А.В. Системное программное обеспечение. – СПб.: Питер, 2003. – 736 с.: ил.
- Молчанов А.Ю. Системное программное обеспечение. – СПб.: Питер, 2003. – 396 с.: ил.

- Конвертер форматов химических формул OPEN BABEL
- Конвертируемость белорусского рубля. Состояние и проблемы
- Конвертируемость валют и государственное регулирование валютного курса
- Конвертируемость валюты
- Конвертируемость валюты
- Конвертируемость валюты и её виды
- Конвертируемость валюты и проблемы конвертируемости рубля
- Конвертация и индексация трудовых пенсий
- Конвертация пенсионных прав застрахованных лиц
- Конвертация электронных валют
- Конвертация электронных валют
- Конвертация электронных валют
- Конвертация электронных валют
- Конвертер десятичных чисел