Транслятор для перевода программ с языка Паскаль в текст программы на языке Си

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

;(ln) putsrt("; printf(\"\\n\");\n");putsrt(";\n");1;

}fae() {();(insource[inspos]=='+'){();

}(insource[inspos]=='-'){();

}(1){();(wt_type==w_w_n) wcopy(); else(wt_type==w_w_str&&gettype()==t_t_int) wcopy(); else(insource[inspos]=='('){();(!fae()) return 0;();(insource[inspos]!=')') return 0;++;_char(')');

}return 0;();c = insource[inspos];(c=='+'||c=='-'||c=='*'||c=='/') wcopy();return 1;

}

}ae(){c,c1;(!fae()) return 0;();= insource[inspos];= insource[inspos+1];(c=='') {+= 2;("!=");

}(c=='=') {++;("==");

}(c=='>'||c=='<') {(c1=='='){+= 2;

}wcopy();

}();(!fae()) return 0;1;

}fle() {k;c,c1;arifm, ip,op;(1){();= fkW();ip, op;= inspos;= outspos;= 0;(insource[inspos]=='+'||[inspos]=='('||[inspos]=='-'||_type==w_w_str&&!fkW() ||_type==w_w_n)= ae();(!arifm){= ip;= op;();= fkW();(wt_type==w_w_str&&k==key_wrd_true){();_char('1');

}(wt_type==w_w_str&&k==key_wrd_false) {();_char('0');

}(wt_type==w_w_str&&gettype()==t_t_bool) wcopy(); else(insource[inspos]=='('){();(!fle()) return 0;();(insource[inspos]!=')') return 0;++;_char(')');

}return 0;

}();= fkW();(k==key_wrd_or) putsrt("||"); else(k==key_wrd_and) putsrt("&&");return 1;();

}

}asign(){type = gettype();(!(type==t_t_bool||type==t_t_int)) return 0;_dt();();();(insource[inspos]!=':'||insource[inspos+1]!='=')0;_char('=');+= 2;(type==t_t_bool) {(!fle()) return 0;

}(!fae()) return 0;();(insource[inspos]!=';') return 0;();_char('\n');1;

}frepeat() {();_dt();("do {\n");_dt();1;

}funtil() {();_dt();_dt();("} while (");(!fle()) return 0;_char(')');();(insource[inspos]!=';') return 0;++;(";\n");1;

}fwhile() {();_dt();("while (");(!fle()) return 0;();(wt_type!=w_w_str||fkW()!=key_wrd_do) return 0;();(")\n");1;

}fbegin(int globalID){rep_n = 0;(globalID!=3) wskip();(globalID==1) putsrt("\n\nvoid main()\n");((globalID!=2)||(globalID!=3)) {_dt();("{\n");_dt();

}b;{= 1;();(IsComment()){();;

}(fkW()){key_wrd_begin:_f_in++;(!fbegin(0)) return 0;_f_out++;;key_wrd_read:_f_in++;(!fread(0)) return 0;_f_out++;;key_wrd_reset:_f_in++;(!freset()) return 0;_f_out++;;key_wrd_assign:_f_in++;(!fassign()) return 0;_f_out++;;key_wrd_while:_f_in++;(!fwhile()) return 0;_f_out++;;key_wrd_end:_f_in++;(globalID == 3) return 3;();_dt();_dt();("}\n");();(global0049D==1&&insource[inspos]=='.' ||!=1&&insource[inspos]==';'){();_f_out++;1;

}

{();0;

}0:(!asign()) return 0;;:0;

}

} while (b);1;

}Translate()

{b;k;_f_in = op_f_out = 0;("#include \n\n");{= 1;();= fkW();(k==key_wrd_var){_f_in++;(!fvar(1)) {();

}op_f_out++; }(k==key_wrd_begin){(!fbegin(1)) {();

}= 0;

}(IsComment()) CommEnd();{_f_in++;();

};

} while (b==1);(insource[inspos]!='.') return 0;++;1;

}main()

{(LC_ALL,"Russian");s[128];("Входной файл: ");("%s",s);(!frfile(s))

{("\nОшибка ввода!");();;

}= NULL;= NULL;_anliz();(1);("\nНовый файл:");("%s",s);(!tofl(s))

{("\nОшибка ввода!");();;

}

printf("\nВ исходном файле было обработано"

" %d операторов.", op_f_in);

printf("\nВ новом файле"

" : %d операторов", op_f_out);

printf("\nНеобработанных и ошибочных"

" операторов: %d", ker);

printf("\n\nРезультат: %s",s);(infl);(outfl);(!kbhit()) ;

}

. Распечатка тестов и результатов

Входной файл 7.pas:

,k:integer;:file of integer;(fl,'c:tuc\tuc.txt');(fl);(fl,bla);(i);:=500;:=10;(i=k) do:=i-k;;.

Вид экрана:

Выходной файл:

#include i,k;*fl;main()

{= fopen("c:tuc\tuc.txt","w");(fl,bla);("%d",&i);=500;=10;((i==k))

{=i-k;

}

}

Пример ошибочного ввода:

Файл с ошибочным оператором:

var,k:integer;

fl:file of integer;(fl,'c:tuc\tuc.txt');(fl);(fl,bla);(i);:=500;:=10;(i=k) do:=i-k;(30);

end;.

Вид экрана:

Выходной файл:

#include i,k;*fl;main()

{= fopen("c:tuc\tuc.txt","w");(fl,bla);("%d",&i);=500;=10;((i==k))

{=i-k;

(30);

Выводы

В ходе выполнения курсовой работы были получены навыки по проектированию программ, их отладке и документированию. Был закреплен весь пройденный материал по диiиплине "Программирование на языке высокого уровня".

В результате работы была написана программа - конвертор на языке СИ для перевода программ на Pascal в текст программы на языке СИ.

Список литературы

1.Герберт Шилдт., "Полный справочник по С++", Ossborne, 2003.

2.Зайцева Л. В., "Алгоритмические языки и программирование", МГГУ, 1996.

3.Карпов Б., Баранов Т., "С++: специальный справочник", СПб.: Питер, 2001.

4.Культин Н., "С/С++ в задачах и примерах", СПб.:БХВ-Петербург, 2002.

5.Стивен Прата, "Язык программирования С", М. Издательство "Диасофт", 2002.

6.Фёдоров А., "Особенности программирования на Borland Pascal", Киев: "Диалектика", 1994.