Транслятор для перевода программ с языка Паскаль в текст программы на языке Си
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
;(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.