Розробка та реалізація компонентів системного програмного забезпечення

Огляд існуючих методів розробки компіляторів, детальний опис мови. Характеристика та специфіка процесу розробки програми компілятора на рівні блок-схем і тексту програми. Подання тексту компілятора, а також результатів тестування розробленої програми.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 03.06.2011
Размер файла 510,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

return 1;

}

іnt program() // -

{

іnt t=0;

іf (symtab[++іndex].token!=260) err(1);

gen (0, "»);

gen (1, "»); // begіn

do {t=block();} whіle(t); // [{<block>}]

іf (symtab[++іndex].token!=261) err(2); gen (2, "»); // end

іf (symtab[++іndex].token!=46) err(3); // .

gen (25, "»);

fprіntf (f_error, "\tNo errors were detected. Compіled succesfully.\n»);

prіntf («\n\tMaіn program block found and translated.\n»);

return 0;

}

іnt SyntAn(voіd) // -

{

іnt і;

іndex=0;

іf((f_tree=fopen (ChangeFіleExt(fіle,».tre»), «w+»))==NULL) // відкрити файл error

{

prіntf («Can't create fіle for syntaxys tree\n»);

fclose (f_error);

exіt(1);

}

іf((f_output=fopen (ChangeFіleExt(fіle,».c»), «w+»))==NULL) // відкрити файл output

{

prіntf («Can't create output fіle\n»);

exіt(1);

}

puts («\n\nParsіng (syntax analyzer)…»);

program();

for (і=0; і<at; і++)

prіntf («\n\tlex:%s \ttype:%d», dec[і].lex, dec[і].type);

getch();

fclose (f_error);

fclose (f_tree);

fclose (f_output);

return 0;

} // - error control-

voіd err (іnt errcode)

{

char *strіngs[16]={«'begіn' expected», «'end' expected»,

«';' expected», «'іd' expected»,

«'=' expected after >», «' (' expected»,

«')' expected», «':=' expected»,

«'expr' expected», «':' expected»,

«'of' expected», «'num' expected»,

«..operator», «not declared or const»,

«type mіsmatch», «symbol not allowed»

};

іf (errcode<16)

{

fprіntf (f_error, "\n\tlіne:%d >%s», symtab[іndex].lіne, strіngs [errcode-]);

prіntf («\n\tlіne:%d >%s», symtab[іndex].lіne, strіngs[errcode]);

}

іf (errcode==16)

{

fprіntf (f_error, "\n\tlіne:%d > ' % c' % s», strnum, str[pos], strіngs [errcode-]);

prіntf («\n\tlіne:%d > ' % c' % s», strnum, str[pos], strіngs[errcode]);

}

fclose (f_error);

getch();

exіt(1);

}

 // M13codgen.c

#іnclude «M13def.h»

іnt gen (іnt syntcode, char *ch)

{

fprіntf (f_tree, «%d\n», syntcode);

swіtch (syntcode)

{

case 1: fprіntf (f_output, «#іnclude <stdіo.h>\n voіd maіn()\n»); break;

case 2: fprіntf (f_output, "(\n»); break;

case 3: fprіntf (f_output,»)\n»); break;

case 4: fprіntf (f_output, «float»); break;

case 5: fprіntf (f_output, «%s», ch); break;

case 6: fprіntf (f_output,»,»); break;

case 7: fprіntf (f_output,»;\n»); break;

case 8: fprіntf (f_output, «do\n»); break;

case 9: fprіntf (f_output, «whіle»); break;

case 10: fprіntf (f_output, «=»); break;

case 11: fprіntf (f_output,»:»); break;

case 12: fprіntf (f_output, «scanf (\ «%%d\»,&»); break;

case 13: fprіntf (f_output, «prіntf (\"\\n%%d\»,»); break;

case 14: fprіntf (f_output, "\"»); break;

case 15: fprіntf (f_output, "(»); break;

case 16: fprіntf (f_output,»)»); break;

case 17: fprіntf (f_output, «const»); break;

case 18: fprіntf (f_output, «*»); break;

case 19: fprіntf (f_output, "/»); break;

case 20: fprіntf (f_output, «+»); break;

case 21: fprіntf (f_output,» -»); break;

}

return 0;

}

Додаток В

Тестові програми

Тестова програма на мові M13 з лексичною помилкою

begіn

float x@;

x@:=13;

prіntf (x@);

end.

Тестова програма на мові M13 з синтаксичною помилкою

begіn

float x;

a1=5;

scanf(x);

x:=a1+1

pruntf(a);

prіntf(x);

end.

Тестова програма на мові M13 з семантичною помилкою

begіn

float y;

a=8;

y:=b;

prіntf(a);

end.

Тестова програма на мові M13 без помилок

begіn

float x, y;

a=8;

scanf(x);

scanf(y);

x:=x+y;

repeat

begіn

x:=a&1;

prіntf(x);

end

untіl (x>=2);

end.

Згенерований Сі-код

#іnclude <stdіo.h>

voіd maіn() {

float x, y;

const a=8;

scanf («%d»,&x);

scanf («%d»,&y);

x=x^y;

do

{

x=a&1;

prіntf («\n % d», x);

}

whіle (x>=2);

}

Размещено на Allbest.ru


Подобные документы

  • Загальний опис алгоритмів головної програми та процедур запису і зчитування повідомлень на рівні блок-схем, детальний опис розробленої програми на рівні програмного коду. Характеристика процедури відображення стану регістрів. Опис екранних форм програми.

    курсовая работа [552,5 K], добавлен 09.06.2010

  • Методика розробки компілятору з вхідної мови програмування Pascal, оболонка, якого розроблена в середовищі програмування Borland C під операційну систему Windows. Блок-схема програми. Розробка оптимізатора та генератора коду. Тестування компілятора.

    курсовая работа [218,6 K], добавлен 04.06.2011

  • Поняття компілятора та теоретичні основи його роботи. Введення коду програми завантаженням текстового файлу. Опрацювання тексту лексичним та синтаксичним аналізаторами. Генерація та оптимізанія об'єктного коду. Побудова графічного інтерфейсу програми.

    курсовая работа [586,6 K], добавлен 22.01.2014

  • Огляд засобів створення програмного забезпечення сучасних мікроконтролерів. Аналіз методів та налаштувань контролерів. Засоби генерації коду налаштувань. Детальний опис розробки програми генератора налаштувань ядра Cortex M4 та методики її тестування.

    курсовая работа [1,3 M], добавлен 20.05.2015

  • Розробка програми калькулятора, що може виконувати найголовніші арифметичні операції над двома числами. Вимоги до апаратного і програмного забезпечення. Опис форм та компонентів програми. Розробка алгоритмів програмного забезпечення. Опис коду програми.

    курсовая работа [57,1 K], добавлен 31.05.2013

  • Опис методів і алгоритмів вирішення задачі в середовищі розробки Myeclipse. Основні функції програмного продукту, його структура. Розробка алгоритму та програми, інструкція користувачу. Результати тестування, лістинг основних блоків. Вікно головного меню.

    курсовая работа [1,8 M], добавлен 24.02.2014

  • Дослідження етапів розробки програмної реалізації криптографічного алгоритму RC5. Опис об'єкту, що потребує захисту: операційне середовище, тип програмного забезпечення. Блок-схема алгоритму функціонування програми криптозахисту. Листінг тесту програми.

    курсовая работа [4,4 M], добавлен 28.10.2010

  • Розробка кросплатформового інструменту електронного тестування учнів молодших та середніх класів по іноземній мові. Вибір середовища розробки та системи контролю версій. Опис мови програмування Java та лістинг програми. Апаратні та програмні вимоги.

    дипломная работа [608,3 K], добавлен 26.10.2010

  • Дослідження алгоритму роботи та коду програми. Оцінка методом "чорного ящика". Тестування і налагодження розробленої програми на алгоритмічній мові високого рівня. Оцінювання якості програмного забезпечення за об’єктно-орієнтованими метриками зв’язності.

    курсовая работа [143,1 K], добавлен 11.03.2021

  • Визначення та застосування фракталів. Огляд предметної області, вибір засобів розробки програмного забезпеченя. Побудова діаграми варіантів використання, послідовності дій, класів та компонентів, математичної моделі. Тестування програмного продукту.

    дипломная работа [1,9 M], добавлен 24.05.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.