Програмне забезпечення для перекладу початкового коду з одних мов програмування на інші

Автор: Пользователь скрыл имя, 26 Октября 2011 в 22:24, курсовая работа

Описание работы

Ознайомлення з програмним забезпеченням для перекладу початкового коду з одних мов програмування на інші.
Розглянуто відповідні засоби для ОС Windows та Linux.

Содержание

Завдання на курсову роботу 3
Теоретична частина 4
Практична частина 6
3.1 Конвертери мов програмування для ОС Linux 6
3.1.1 Програма OpenCobol 6
3.1.1 Програма F2C 13
3.2 Конвертери мов програмування для ОС Windows 15
3.2.1 Програма BCX 15
Висновки 22
Список використаної літератури

Работа содержит 1 файл

Програмне забезпечення для перекладу початкового коду з одних мов програмування на інші.doc

— 433.50 Кб (Скачать)
 

     Це  ми можемо побачити на рисунку 8.

           
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

     Рис. 8. BCX to EXE Tool  
 

     Після цього у каталозі, де знаходився наш файл hello.bas з’явилися файли hello.C, hello.exe і hello.obj.

     Відкриємо файл hello.C, щоб подивитися на перекладений код з мови Basic на мову С. Вміщуване файлу: 

// *********************************************************************

// Created with BCX32 - BASIC To C/C++ Translator (V) 6.00 (2009/06/02)

//                 BCX (c) 1999 - 2009 by Kevin Diggins

// *********************************************************************

//              Translated for compiling with a C Compiler

// *********************************************************************

#include <windows.h>    // Win32 Header File

#include <windowsx.h>   // Win32 Header File

#include <commctrl.h>   // Win32 Header File

#include <commdlg.h>    // Win32 Header File

#include <mmsystem.h>   // Win32 Header File

#include <shellapi.h>   // Win32 Header File

#include <shlobj.h>     // Win32 Header File

#include <richedit.h>   // Win32 Header File

#include <wchar.h>      // Win32 Header File

#include <objbase.h>    // Win32 Header File

#include <ocidl.h>      // Win32 Header File

#include <winuser.h>    // Win32 Header File

#include <olectl.h>     // Win32 Header File

#include <oaidl.h>      // Win32 Header File

#include <ole2.h>       // Win32 Header File

#include <oleauto.h>    // Win32 Header File

#include <conio.h>

#include <direct.h>

#include <ctype.h>

#include <io.h>

#include <math.h>

#include <stdio.h>

#include <string.h>

#include <stddef.h>

#include <stdlib.h>

#include <setjmp.h>

#include <time.h>

#include <stdarg.h>

#include <process.h> 
 

// ***************************************************

// Compiler Defines

// *************************************************** 

// C++

#if defined( __cplusplus )

  #define overloaded

  #define C_EXPORT EXTERN_C __declspec(dllexport)

  #define C_IMPORT EXTERN_C __declspec(dllimport)

#else

  #define C_EXPORT __declspec(dllexport)

  #define C_IMPORT __declspec(dllimport)

#endif 

// Open Watcom defs

#if defined( __WATCOM_CPLUSPLUS__ ) || defined( __TINYC__ )

  #define atanl atan

  #define sinl  sin

  #define cosl  cos

  #define tanl  tan

  #define asinl asin

  #define acosl acos

  #define log10l log10

  #define logl   log

  #define _fcloseall fcloseall

#endif 

// Borland C++ 5.5.1 defs - bcc32.exe

#if defined( __BCPLUSPLUS__ )

  // ===== Borland Libraries ==========

  #include <dos.h>

  #pragma comment(lib,"import32.lib")

  #pragma comment(lib,"cw32.lib")

  // ==================================

#endif 

// Microsoft VC++

#ifndef DECLSPEC_UUID

  #if (_MSC_VER >= 1100) && defined ( __cplusplus )

    #define DECLSPEC_UUID(x)    __declspec(uuid(x))

  #else

    #define DECLSPEC_UUID(x)

  #endif

#endif 
 

#if !defined( __LCC__ )

// *************************************************

// Instruct Linker to Search Object/Import Libraries

// *************************************************

#pragma comment(lib,"kernel32.lib")

#pragma comment(lib,"user32.lib")

#pragma comment(lib,"gdi32.lib")

#pragma comment(lib,"comctl32.lib")

#pragma comment(lib,"advapi32.lib")

#pragma comment(lib,"winspool.lib")

#pragma comment(lib,"shell32.lib")

#pragma comment(lib,"ole32.lib")

#pragma comment(lib,"oleaut32.lib")

#pragma comment(lib,"uuid.lib")

#pragma comment(lib,"odbc32.lib")

#pragma comment(lib,"odbccp32.lib")

#pragma comment(lib,"winmm.lib")

#pragma comment(lib,"comdlg32.lib")

#pragma comment(lib,"imagehlp.lib")

#pragma comment(lib,"version.lib")

#else

#pragma lib <winspool.lib>

#pragma lib <shell32.lib>

#pragma lib <ole32.lib>

#pragma lib <oleaut32.lib>

#pragma lib <uuid.lib>

#pragma lib <odbc32.lib>

#pragma lib <odbccp32.lib>

#pragma lib <winmm.lib>

#pragma lib <imagehlp.lib>

#pragma lib <version.lib>

// *************************************************

// End of Object/Import Libraries To Search

// *************************************************

#endif 
 
 

// *************************************************

//           User Global Initialized Arrays

// ************************************************* 
 

// *************************************************

//                  Main Program

// ************************************************* 

int main(int argc, char *argv[])

{

printf("%s\n","Hello World!");

  return 0;   //  End of main program

} 

// *************************************************

//                 Runtime Functions

// *************************************************

  

     Крім  конвертування програма BCX виконує і інші функції. Розглянемо додатки, які ще входять до її складу.

 

     

     BCX Menu Maker

     BCX Menu Maker – додаток, який полегшує створення меню. BCX Menu Maker створює функцію, яку можна включати у вашу програму для простішого створення меню. Вона може додавати відповідні гарячі клавіші в меню. Після завершення, програма запише функцію у файл (BCX_Menu_Maker.bas), а також помістить його в буфер обміну Windows, щоб можна було вставити у вашу програму. Або ви можете використовувати $INCLUDE "BCX_MENU_MAKER.BAS" у вашій програмі.

     Вікно цієї програми бачимо на рисунку 9.

Рис. 10. Робоче вікно додатку  BCX Menu Maker 
 

     BCX MsgBox Builder

     BCX MsgBox Builder – додаток, за допомогою якого можна створювати клас MessageBox вікон повідомлень і додавати їх у свої програми. Наприклад, нехай вікно нашого повідомлення буде мати назву Вихід. Зміст повідомлення буде: «Ви дійсно хочете  покинути нашу програму?» Можливі варіанти відповіді: «Так, Ні, Відмінити.» Так, як це в нас питання, то значок нехай буде Question.(рис. 11)

     

     Рис. 11 Заповнення вікна  BCX MsgBox Builder

 

Натиснемо на кнопку Test it і отримаємо таке вікно повідомлення(рис. 12):

 
 
 
 
 
 
 

     Рис. 12 Вікно повідомлення Вихід. 

     Тепер, натиснувши кнопку Make it, отримаємо повідомлення про те, що Basic MessageBox помістилося в буфер обміну і ми можемо вставити його в нашу програму.(рис. 13):

     Рис. 13 Повідомлення про успішне створення вікна повідомлення. 

     При вставленні з буфера обміну можна  побачити такий код: 

Dim MyMsg$ 

MyMsg$ = _

"Ви  дійсно хочете  покинути нашу  програму?" 

MessageBox(GetActiveWindow(),MyMsg,"Вихід",MB_YESNOCANCEL OR MB_ICONQUESTION OR MB_TASKMODAL) 
 

     Jen's File Editor

     До  пакету BCX також додатково входить  додаток Jen's File Editor. Це досить простий, легкий у використання файловий редактор програмування. Він не вимагає установки.

     Ось деякі ключові особливості Jen's File Editor:

     · Редагування блоків

     · Управління кольором

     · Підсвічування синтаксису

     · Печатки

     · Функція пошуку

     · Закладки

     · Спеціальні налаштування

     · Меню інструментів

     · Містить Типові шаблони для проекту в HTML

     · Контекстне меню

     · Макроси

     · Функціональні клавіші 

     Робоче  вікно Jen's File Editor виглядає, як на рисунку 14. 

     

     Рис. 14 Робоче вікно додатку Jen's File Editor

 

     4. Висновки 

     Ознайомившись з роботою програм-конвертерів BCX, F2C, OpenCobol, виконуючи курсову роботу, я зрозуміла, що автоматично конвертовані програми зазвичай істотно гірші, ніж розроблені в рамках цільової мови від початку до кінця. Зрозуміло, що в ідеалі результат перетворень повинен виглядати так, як ніби він був написаний на цільовій мові з використанням всіх його особливостей, однак реальні результати конвертації часто зберігають ідеологію вихідного мови. Багато хто очікує, що структура програми після автоматизованих перетворень може тільки покращитися, але концептуальні зміни програм практично завжди пов'язані з великим обсягом ручної роботи.

 

  1. Список використаної літератури
 
  1. S. I. Feldman, David M. Gay, Mark W. Maimone, and N. L. Schryer, "A Fortran to C Converter," AT&T Bell Laboratories technical report, 1999, p. 21–22.
  2. http://www.osp.ru/os/2001/05-06/180189/ - Терехов А. Н., Верхув К. В.  Проблемы языковых преобразований. 6 с.
  3. http://opencobol.add1tocobol.com/#does-opencobol-pass-the-nist-test-suite. - Brian Tiffin, John Ellis, Vincent Coen, OpenCOBOL FAQ., October 12, 2009.
  4. http://www.bcxgurus.com/ - Kevin Diggins, BCX BASIC to C Translator, 2009.

Информация о работе Програмне забезпечення для перекладу початкового коду з одних мов програмування на інші