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

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

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

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

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

t=0; do{t=block();} while(t); // [{<block>}] // [{<block>}]

t=0; do{t=stmt();} while(t); // [{<stmt>}]

if(symtab[++index].token!=261) err(2); gen(2,""); // stop

return 1;

}

int program()//---------------------------------------------------------------

{

int t=0;

if(symtab[++index].token!=260) err(1);

gen(0,"");

gen(1,""); // pochatok

do{t=block();} while(t); // [{<block>}]

if(symtab[++index].token!=261) err(2); gen(2,""); // kinez

if(symtab[++index].token!=46) err(3); //.

gen(25,"");

fprintf(f_error,"\tNo errors were detected. Compiled succesfully.\n");

printf("\n\tMain program block found and translated.\n");

return 0;

}

int SyntAn(void)//---------------------------------------------------------------

{

int i;

index=0;

if((f_tree=fopen(ChangeFileExt(file,".tre"),"w+"))==NULL) //вiдкрити файл error

{

printf("Can't create file for syntaxys tree\n");

fclose(f_error);

exit(1);

}

if((f_output=fopen(ChangeFileExt(file,".c"),"w+"))==NULL) //вiдкрити файл output

{

printf("Can't create output file\n");

exit(1);

}

puts("\n\nParsing (syntax analyzer)...");

program();

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

printf("\n\tlex: %s \ttype: %d",dec[i].lex,dec[i].type);

getch();

fclose(f_error);

fclose(f_tree);

fclose(f_output);

return 0;

}

//------------------------------- error control-------------------------------

void err(int errcode)

{

char *strings[16]={ "'pochatok' expected", "'kinez' expected",

"';' expected", "'id' expected",

"'=' expected after >", "'(' expected",

"')' expected", "':=' expected",

"'expr' expected", "':' expected",

"'of' expected", "'num' expected",

"..operator", "not declared or const",

"type mismatch", "symbol not allowed"

};

if(errcode<16)

{

fprintf(f_error,"\n\tline: %d > %s",symtab[index].line, strings[errcode--]);

printf("\n\tline: %d > %s",symtab[index].line, strings[errcode]);

}

if(errcode==16)

{

fprintf(f_error,"\n\tline: %d > '%c' %s",strnum, str[pos], strings[errcode--]);

printf("\n\tline: %d > '%c' %s",strnum, str[pos], strings[errcode]);

}

fclose(f_error);

getch();

exit(1);

}

// s8codgen.c

#include "s8def.h"

int gen(int syntcode,char *ch)

{

fprintf(f_tree,"%d\n",syntcode);

switch (syntcode)

{

case 0: fprintf(f_output,"#include <stdio.h>\nvoid main()\n"); break;

case 1: fprintf(f_output,"{\n"); break;

case 2: fprintf(f_output,"}\n"); break;

case 3: fprintf(f_output,"int "); break;

case 4: fprintf(f_output,"int "); break;

case 5: fprintf(f_output,"%s",ch); break;

case 6: fprintf(f_output,","); break;

case 7: fprintf(f_output,";\n"); break;

case 8: fprintf(f_output,"do\n"); break;

case 9: fprintf(f_output,"while"); break;

case 10: fprintf(f_output,"="); break;

case 11: fprintf(f_output,":"); break;

case 12: fprintf(f_output,"scanf(\"%%d\",&"); break;

case 13: fprintf(f_output,"printf(\"\\n%%d\","); break;

case 14: fprintf(f_output,"\""); break;

case 15: fprintf(f_output,"("); break;

case 16: fprintf(f_output,")"); break;

case 17: fprintf(f_output,"const "); break;

case 18: fprintf(f_output,">="); break;

case 19: fprintf(f_output,"~"); break;

case 20: fprintf(f_output,"^"); break;

case 21: fprintf(f_output,"&"); break;

}

return 0;

}

Додаток В Тестові програми

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

begin

int x@;

x@:=5;

out(x@);

end.

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

begin

int x;

a1=5;

in(x);

x:=a1+1

out(a);

out(x);

end.

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

pochatok

boolean y;

a=8;

y:=b;

out(a);

kinez.

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

begin

int x,y;

a=8;

in(x);

in(y);

x:=x+y;

repeat

begin

x:=a&1;

out(x);

kinez

until(x>=2);

end.

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

#include <stdio.h>

void main()

{

int x,y;

const a=8;

scanf("%d",&x);

scanf("%d",&y);

x=x^y;

do

{

x=a&1;

printf("\n%d",x);

}

while(x>=2);

}

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

...

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

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

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

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

    курсовая работа [75,8 K], добавлен 26.12.2009

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

    курсовая работа [510,2 K], добавлен 03.06.2011

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

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

  • Аналіз особливостей мови програмування Java та середовища Android Studio. Розробка програмного забезпечення для якісного та ефективного вивчення іноземних слів. Побудова базових алгоритмів і структури даних. Вибір мови програмування, реалізація програми.

    курсовая работа [335,3 K], добавлен 11.01.2015

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

    курсовая работа [135,8 K], добавлен 11.10.2010

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

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

  • Розробка програми для моделювання роботи алгоритму Дейкстри мовою C# з використанням об’єктно-орієнтованих принципів програмування. Алгоритм побудови робочого поля. Програмування графічного інтерфейсу користувача. Тестування програмного забезпечення.

    курсовая работа [991,4 K], добавлен 06.08.2013

  • Аналіз навігаційних технологій у сучасних AVL системах. Структура системи і вимоги до апаратного забезпечення, розробка алгоритмів функціонування окремих програмних модулів. Вибір мови програмування і СУБД. Тестовий варіант програмного забезпечення.

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

  • Створення програми для роботи з веб-камерою з автоматичним визначенням встановленої камери на комп'ютері. Характеристика апаратної конфігурації програми. Опис мови і середовища програмування. Розробка алгоритму, інструкції для програміста та користувача.

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

  • Розробка програмного додатку - гри "Jump way", яка поєднала в собі сучасні методи побудови 2D ігор. Обґрунтування вибору мови програмування. Проектування UML-діаграм класів. Користувацький інтерфейс. Програмна реалізація гри. Інструкція користувача.

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

  • Дослідження класифікації автоматизованих інформаційних систем. Обґрунтування вибору мови і системи програмування. Програмне забезпечення та опис компонентів середовища. Інтерфейс програмного комплексу. Розрахунок повної собівартості програмного продукту.

    дипломная работа [584,1 K], добавлен 26.06.2015

  • Широкі можливості по використанню комп'ютерних навчальних систем. Розробка навчальної системи мультимедійного посібника з дисципліни "Інформатика і ОТ" на тему "Особливості мови програмування С++. Вказівники". Вимоги до розробки навчальної програми.

    курсовая работа [2,9 M], добавлен 23.11.2010

  • Вивчення складових частин, основних принципів побудови і функціонування компіляторів. Поняття хешування, сутність алгоритму роботи лексичного аналізатора. Практичне освоєння методів побудови простих компіляторів для заданої вхідної мови - Borland Delphi.

    дипломная работа [763,6 K], добавлен 27.05.2013

  • Вибір мови програмування та середовища розробки. Основні можливості мови php та сервера MySQL. Основні переваги середовища розробки NetBeans. Macromedia Dreamweaver як один з популярних середовищ розробки сайтів. Розробка програмного коду сайту.

    контрольная работа [3,0 M], добавлен 16.02.2013

  • Особливості системи онлайн-агрегаторів новин, універсальної програмної платформи Microsoft Window. Використання мови програмування C#, створення бази даних. Розробка програмного продукту, алгоритм його створення. Вихідний код та інструкція користувача.

    дипломная работа [730,9 K], добавлен 21.01.2016

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

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

  • Основні характеристики мови "С ++". Сучасне системне та прикладне програмне забезпечення. Середовище програмування Borland Builder С++. Перелік та опис програмного забезпечення, яке використовується в обчислювальному центрі. Розробка програми Шифр Цезаря.

    отчет по практике [307,5 K], добавлен 28.09.2015

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

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

  • Основні принципи об’єктно-орієнтованого програмування. Типові середовища програмування та особливості мови С++. Етапи проектування БД. Розробка програмного забезпечення для реалізації створення бази відеофільмів. Основні положення та моделі БД.

    курсовая работа [2,7 M], добавлен 24.03.2011

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