Конвертер с одного языка высокого уровня на другой

Автор работы: Пользователь скрыл имя, 25 Ноября 2013 в 13:01, курсовая работа

Краткое описание

Данная задача актуальна из-за некоторых проблем, связанных с использованием разных языков программирования для написания программ, как например Delphi или Паскаль. Для людей знающих всего несколько языков, не включающих выше перечисленные, данная проблема будет стоять особенно остро. Язык Си и Си++ на наше время являются наиболее известными, поэтому именно этот язык мы используем для трансляции заданной программы. Кроме того, язык Си и Си++ так же наиболее эффективный и перевод программ именно на этот язык упрощает работу с программой. Транслятор дает возможность обеспечить более дешевую разработку программы без затраты в дальнейшем на человеческие ресурсы.

Содержание

1. Описание задания для курсового проекта
2. Постановка задачи
2.1 Название задачи
2.2 Описание
2.4 Входные данные
2.5 Выходные данные
2.6 Ошибки
3. Выбор метода решения
4. Описание функций и переменных транслятора
5. Разработка алгоритма
6. Кодирование алгоритма программы транслятора на языке Си++
7. Распечатка тестов и результатов
8. Выводы
9. Список использованной литературы

Прикрепленные файлы: 1 файл

СПО курсовая работа.doc

— 101.50 Кб (Скачать документ)

Муниципальное образовательное  учреждение


высшего профессионального  образования

Южно-Уральский профессиональный институт

Кафедра «Информатика и вычислительная техника»

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Курсовая работа

по  дисциплине СД.ДС.Ф.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 Название задачи

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

      Данная задача  актуальна из-за некоторых проблем,  связанных с использованием разных  языков программирования для  написания программ, как например Delphi или Паскаль. Для людей  знающих всего несколько языков, не включающих выше перечисленные, данная проблема будет стоять особенно остро. Язык Си и Си++ на наше время являются наиболее известными, поэтому именно этот язык мы используем для трансляции заданной программы. Кроме того, язык Си и Си++ так же наиболее эффективный и перевод программ именно на этот язык упрощает работу с программой. Транслятор дает возможность обеспечить более дешевую разработку программы без затраты в дальнейшем на человеческие ресурсы.

      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],slen);

       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],slen)) return 0;

head = head->next;

}

ntype = new types;

memcpy(ntype->s,&instr[inpos],slen);

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],slen)) return head->tid;

       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],slen)) return p->tp;

       p = p->next;

       }

       p = vars;

       while (p) {

       if (strlen(p->s)==slen&&

       !memcmp(p->s,&instr[inpos],slen)) return p->tp;

       p = p->next;

       }

       return 0;

      }

      char* usertype()

      {

       types * p;

       p = typeslist;

       while (p) {

       if (strlen(p->s)==slen&&

!memcmp(p->s,&instr[inpos],slen)) return p->s;

       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 литература

 

Основная:

  1. Молчанов А.Ю. Системное программное обеспечение. Лабораторный практикум. – СПб.: Питер, 2005. – 284 с.: ил.

 

Дополнительная:

  1. Гордеев А.В. Системное программное обеспечение. – СПб.: Питер, 2003. – 736 с.: ил.
  2. Молчанов А.Ю. Системное программное обеспечение. – СПб.: Питер, 2003. – 396 с.: ил.

Информация о работе Конвертер с одного языка высокого уровня на другой