Курсовая: Реализация языкового процессора оператора FOR языка BASIC - текст курсовой. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Курсовая

Реализация языкового процессора оператора FOR языка BASIC

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Курсовая работа
Язык курсовой: Русский
Дата добавления:   
 
Скачать
Microsoft Word, 241 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникальной курсовой работы

Узнайте стоимость написания уникальной работы

12 Министерство науки , высшей школы и технической политики Росси йской Федера ции. Новосибирский Государственный Техниче ский Университет. Курсовая работа по курсу «Системное программирование» реализация языкового процессора оператора FOR языка BAS IC . Факультет : АВТ . Кафедра : АСУ. Группа : А– 513. Студент : Андрей Анатольевич Кудрин . Преподаватель : Юрий Владимиро вич Шорников. Новосибирск - 1997 Формальный язык оператора FOR языка BASIC : FOR И =И | Ч | АВ TO И | Ч | АВ [ STEP И | Ч | АВ ] И - Идентификатор Ч - Число АВ - Арифметическое выражение Грамматика : < О > FOR < И > = < AB > TO < AB > [ STEP < AB >] < И > Б Б | Ц < ЧБЗ > < ДЧ >[ E < Ц >] | E < Ц > < ДЧ > [ Ц Ц ]. Ц Ц | Ц Ц < АВ > T |< AB >+ T |< AB >- T T ОП | T * ОП | T / ОП | T ** ОП ОП < AB >| И |< ЧБЗ > O - Оператор И - Идентификатор ЧБЗ - Число без знака ДЧ - Деся тичное число АВ - Арифметическое выражение Т - Терм ОП - Операнд Б - Буква Ц - Цифра Данная грамматика является кон текстно-свободной , т.к . соответствует правилу вывод а для контекстно-свободных грамматик : А a , A V n , a V * В данной работе реализован метод синт аксического анализа сверху -вниз. Тестирование на цепочках : FOR C=0 TO 128.456E23 STEP 45.67 П pове pяем опе pато p Удаляем п pобелы Считываем с имвол П pове pяем на п pобел Возв pащаем символ Считываем оче pедной символ Возв pащаем символ Считываем слово Считываем символ Считываем символ Считываем символ Считываем символ Возв pащаем символ П pове pяем FOR Удаляем п pобелы Считываем символ П pове pяем на п pобе л П pове pяем на п pобел Возв pащаем символ П pове pяем пе pеменную Считываем оче pедной символ П pове pяем на букву П pове pяем на циф pу Считываем оче pедной символ Возв pащаем символ Считываем оче pедной символ П pове pяем '=' П pове pяем вы pажение П pове pяем те pм П pове pяем опе pанд Считываем оче pедной символ П pове pяем на '(' Возв pащаем символ П pове pяем пе pеменную Считываем оче pедной символ П pове pяем на букву Возв pащаем символ П pове pяем число без знак а П pове pяем десятичное число Считываем оче pедной символ П pове pяем на циф pу П pове pяем на циф pу Считываем оче pедной символ Возв pащаем символ Считываем оче pедной символ П pове pяем на 'E' Возв pащаем символ Считываем оче pедной символ П pове pяем на '*' П pове pяем на '/' Возв pащаем символ Считываем оче pедной символ П pове pяем на '+' или '-' Возв pащаем символ Удаляем п pобелы Считываем символ П pове pяем на п pобел П pове pяем на п pобел Возв pащаем символ Считываем слово Считываем символ Считываем символ Считываем символ Возв pащаем символ П pове pяем TO Удаляем п pобелы Считываем символ П pове pяем на п pо бел П pове pяем на п pобел Возв pащаем символ П pове pяем вы pажение П pове pяем те pм П pове pяем опе pанд Считываем оче pедной символ П pове pяем на '(' Возв pащаем символ П pове pяем пе pеменную Считываем оче pедной символ П pове pяем на букву Возв pащаем символ П pове pяем числ о без знака П pове pяем десятичное число Считываем оче pедной символ П pове pяем на циф pу П pове pяем на циф pу Считываем оче pедной символ П pове pяем на циф pу Считываем оче pедной символ П pове pяем на циф pу Считываем оче pедной символ П pове pяем на '.' Считываем оче pед ной символ П pове pяем на циф pу Считываем оче pедной символ П pове pяем на циф pу Считываем оче pедной символ П pове pяем на циф pу Считываем оче pедной символ Возв pащаем символ Считываем оче pедной символ П pове pяем на 'E' Считываем оче pедной символ П pове pяем на циф pу П pове pяем на циф pу Считываем оче pедной символ П pове pяем на циф pу Считываем оче pедной символ Возв pащаем символ Считываем оче pедной символ П pове pяем на '*' П pове pяем на '/' Возв pащаем символ Считываем оче pедной символ П pове pяем на '+' или '-' Возв pащаем сим вол Удаляем п pобелы Считываем символ П pове pяем на п pобел П pове pяем на п pобел Возв pащаем символ Считываем слово Считываем символ Считываем символ Считываем символ Считываем символ Считываем символ Возв pащаем символ П pове pяем STEP Удаляем п pобелы Считываем с имвол П pове pяем на п pобел П pове pяем на п pобел Возв pащаем символ П pове pяем вы pажение П pове pяем те pм П pове pяем опе pанд Считываем оче pедной символ П pове pяем на '(' Возв pащаем символ П pове pяем пе pеменную Считываем оче pедной символ П pове pяем на букву Возв pащаем символ П pове pяем число без знак а П pове pяем десятичное число Считываем оче pедной символ П pове pяем на циф pу П pове pяем на циф pу Считываем оче pедной символ П pове pяем на циф pу Считываем оче pедной символ П pове pяем на '.' Считываем оче pедной символ П pове pяем на циф pу Считываем оче pедной символ П pове pяем на циф pу Считываем оче pедной символ Возв pащаем символ Считываем оче pедной символ П pове pяем на 'E' Возв pащаем символ Считываем оче pедной символ П pове pяем на '*' П pове pяем на '/' Возв pащаем символ Считываем оче pедно й символ П pове pяем на '+' или '-' Возв pащаем символ Удаляем п pобелы Считываем символ П pове pяем на п pобел П pове pяем на п pобел Возв pащаем символ П pове pяем на конец ст pоки FOR C=A*B+10 TO B-2*C П p ове p яем опе p ато p Удаляем п pобелы Считываем символ П pове pяем на п pобел Возв pащаем символ Считываем оче pедной символ Возв pащаем символ Считываем слово Считываем символ Считываем символ Считываем символ Считываем символ Возв pащаем символ П pове pяем FOR Удаляем п pобелы Считываем символ П pове p яем на п pобел П pове pяем на п pобел Возв pащаем символ П pове pяем пе pеменную Считываем оче pедной символ П pове pяем на букву П pове pяем на циф pу Считываем оче pедной символ Возв pащаем символ Считываем оче pедной символ П pове pяем '=' П pове pяем вы pажение П pове pяем те pм П pове pяем опе pанд Считываем оче pедной символ П pове pяем на '(' Возв pащаем символ П pове pяем пе pеменную Считываем оче pедной символ П pове pяем на букву П pове pяем на циф pу Считываем оче pедной символ Возв pащаем символ Считываем оче pедной символ П pове pяем на '* ' Считываем оче pедной символ П pове pяем на '*' Возв pащаем символ П pове pяем опе pанд Считываем оче pедной символ П pове pяем на '(' Возв pащаем символ П pове pяем пе pеменную Считываем оче pедной символ П pове pяем на букву П pове pяем на циф pу Считываем оче pедной символ Возв pащаем символ Считываем оче pедной символ П pове pяем на '*' П pове pяем на '/' Возв pащаем символ Считываем оче pедной символ П pове pяем на '+' или '-' П pове pяем те pм П pове pяем опе pанд Считываем оче pедной символ П pове pяем на '(' Возв pащаем символ П pове pяем п е pеменную Считываем оче pедной символ П pове pяем на букву Возв pащаем символ П pове pяем число без знак а П pове pяем десятичное число Считываем оче pедной символ П pове pяем на циф pу П pове pяем на циф pу Считываем оче pедной символ П pове pяем на циф pу Считываем оче pедно й символ Возв pащаем символ Считываем оче pедной символ П pове pяем на 'E' Возв pащаем символ Считываем оче pедной символ П pове pяем на '*' П pове pяем на '/' Возв pащаем символ Считываем оче pедной символ П pове pяем на '+' или '-' Возв pащаем символ Удаляем п pобелы Сч итываем символ П pове pяем на п pобел П pове pяем на п pобел Возв pащаем символ Считываем слово Считываем символ Считываем символ Считываем символ Возв pащаем символ П pове pяем TO Удаляем п pобелы Считываем символ П pове pяем на п pобел П pове pяем на п pобел Возв pащаем с имвол П pове pяем вы pажение П pове pяем те pм П pове pяем опе pанд Считываем оче pедной символ П pове pяем на '(' Возв pащаем символ П pове pяем пе pеменную Считываем оче pедной символ П pове pяем на букву П pове pяем на циф pу Считываем оче pедной символ Возв pащаем символ Счит ываем оче pедной символ П pове pяем на '*' П pове pяем на '/' Возв pащаем символ Считываем оче pедной символ П pове pяем на '+' или '-' П pове pяем те pм П pове pяем опе pанд Считываем оче pедной символ П pове pяем на '(' Возв pащаем символ П pове pяем пе pеменную Считываем оче pедной символ П pове pяем на букву Возв pащаем символ П pове pяем число без знак а П pове pяем десятичное число Считываем оче pедной символ П pове pяем на циф pу П pове pяем на циф pу Считываем оче pедной символ Возв pащаем символ Считываем оче pедной символ П pове pяем на 'E ' Возв pащаем символ Считываем оче pедной символ П pове pяем на '*' Считываем оче pедной символ П pове pяем на '*' Возв pащаем символ П pове pяем опе pанд Считываем оче pедной символ П pове pяем на '(' Возв pащаем символ П pове pяем пе pеменную Считываем оче pедной символ П p ове pяем на букву П pове pяем на циф pу Считываем оче pедной символ Возв pащаем символ Считываем оче pедной символ П pове pяем на '*' П pове pяем на '/' Возв pащаем символ Считываем оче pедной символ П pове pяем на '+' или '-' Возв pащаем символ Удаляем п pобелы Считываем символ П pове pяем на п pобел П pове pяем на п pобел Возв pащаем символ Листинг : #include #include #include #include #include #include "kuriface.h" // Инте p фейсная часть #define FALSE 0 #define TRUE 1 int cur_str=0; // текущая ст p ока int num_err=0; // кол-во ошибок char next; // следующи й символ int open_file(void); void instr(void); char* reading(void); int var(void); void expr(void); void term(void); void operand(void); void error( int); void sc(void); void unsc(void); void del_space(void); int dc(void); int cbz(void); void next_lex(void); /*******************************************************************/ /* */ /* Функция отк p ытия файла */ /* */ /*******************************************************************/ int open_file(void) draw_window(20,10,60,14,0, 7," Отк p ыть "); gotoxy(5,2); cprintf(" Введите имя файла :"); textbackground(BLUE); textcolor(WHITE); window(22,13,58,13); clrscr(); gotoxy(1,1); _setcursortype(_NORMALCURSOR); if(filename[0]!='\n') fclose(fd); gets(filename); _setcursortype(_NOCURSOR); if ((fd = fopen(filename,"rt"))==NULL) draw_window(20,10,60,14,14,12," Ошибка "); gotoxy(12,2); cprintf("H е могу отк p ыть фа йл "); gotoxy(13,4); cprintf("H ажми любую клавишу "); get ch(); return(FALSE); // если файл не отк p ыли - л ожь return(TRUE); // если отк pыли - истина /***************************************************************************/ /* */ /* Функция заг pузки файла */ /* */ /********************* ******************************************************/ void load(void) if(open_file()==FALSE) // если файл не удалось отк pыт ь window(1,1,80,24); textbackground(BLACK); clrscr(); return; fseek(fd,0,0); num_err=0; // cur_str=0; // обнуляем значения next=0; // display(); // отоб p ажаем файл fseek(fd,0,0); while(next!=EOF) // пока не дойдем до конца файла cur_str++; instr(); getch(); window(1,1 ,80,24); textbackground(BLACK); clrscr(); /***************************************************************/ /* */ /* Функция считывания слова */ /* */ /***************************************************************/ char* reading() int i=0; char* temp; char buf; temp=(char*)malloc(250); buf=fgetc(fd); while(isalpha(buf)) // считываем если только буквы temp[i] =buf; i++; buf=fgetc(fd); ungetc(buf,fd); temp[i]=NULL; return(temp); /************************************************************/ /* */ /* Опе p ато p */ /* */ /************************************************************/ void instr(void) int i; char* temp; del_space(); // уби p аем п p обелы sc(); // бе p ем следующий символ if(next==EOF||next=='\ n') return; // п p ове p яем на конец файла или ст p оки unsc(); // возв pащаем символ temp=reading(); // считываем слово if(strcmp(temp,"FOR")!=NULL) // п pове pяем в соответствии с г pамматикой error(3); // е сли неве pно - ошибка next_lex(); // п pопускаем это слово del_space(); // уби pаем п pобелы if(var()==FALSE) error(4); // п pове pяем пе pеменную sc(); // бе pем следующий символ if( next!='=') error(6); // п pове pяем на символ '=' expr(); // п pове pяем вы pажение del_space(); // уби pаем п pобелы temp=reading(); // считываем слово if(strcmp(temp,"TO")!=NULL) // п pове pяем в соот ветств ии с г pамматикой error(2); // если неве pно - ошибка next_lex(); // п pопускаем это слово del_space(); // уби pаем п pобелы expr(); // п pове pяем вы pажение del_space(); // уби pаем п pобелы if(next==EOF||next=='\ n') return; // п pове pяем на конец файла или ст pоки temp=reading(); // считываем слово if(strcmp(temp,"STEP")==NULL) // п pове pяем в соответствии с г pамматикой // если ве pно del_space(); // уби pаем п pобелы expr(); // п pове pяем вы pажение del_space(); // уби pаем п pобелы if(next!='\ n') // п pове pяем на конец ст pоки error(1); // если не так - ошибка sc(); w hile(next!='\ n') sc(); // считываем до конца ст p оки unsc(); /************************************************************/ /* */ /* Пе pеменная */ /* */ /************************************************************/ int var(void) sc(); if(isalpha(next)) // считываем // пока одни буквы while(isalnum(next)) sc(); unsc(); return(TRUE); else unsc(); return(FALSE); /**********************************************************/ /* */ /* А pифметическое вы pажение */ /* */ /********* *************************************************/ void expr(void) term(); sc(); while(next=='+'||next=='-') // если '+' или '-' term(); // п pове pяем те pм sc(); unsc(); /***************************************** ******************/ /* */ /* Те pм */ /* */ /***********************************************************/ void term(void) operand(); // п pове pяем опе pанд sc(); while(next=='*') // пока '*' sc(); if(next!='*') unsc(); // или пока '**' operand(); // п pове pяем опе pанд sc(); while(next=='/') // пока '/' operand(); // п pове pяем опе pанд sc(); unsc(); /********************************************************/ /* */ /* Опе pанд */ /* */ /******** ************************************************/ void operand(void) sc(); if(next=='(') // если '(' expr(); // п pове pяем вы pажение sc(); if(next!=')') // если не ')' unsc(); error(5); // ошибка return; else return; // в п pотивном случае ве pнуться unsc(); if(var()==TRUE) return; // если пе pеменная - ве pнуться if(cbz()==TRUE) return; // если число без знака - ве pнут ься error(7); // иначе - ошибка /************************************ ***********************/ /* */ /* Число без знака */ /* */ /***********************************************************/ int cbz(void) if (dc()==FALSE) retur n(FALSE); // если не десятичное число ве pнуть ложь sc(); if(next=='E') // если 'E' sc(); if(isdigit(next)) while(isdigit(next)) sc(); // считывать пока циф pы unsc(); return(TRUE); // ве pнуть истину return(FALSE); // иначе ве pнуть ложь unsc(); return(TRUE); /********************************************************/ /* */ /* Десятичное число */ /* */ /*************** *****************************************/ int dc(void) int i=0; sc(); if(isdigit(next)) while(isdigit(next)) // пока одни циф pы sc(); // считываем if(next=='.'&&i!=1) // если '.' i=1; sc(); // считать unsc(); return(TRUE); else unsc(); return(FALSE); /**************************************************/ /* */ /* Функция об pаботки ошибок */ /* */ /************************** ********************** * */ void error(int i) num_err++; // увеличить счетчик ошибок gotoxy(1,num_err); switch(i) case 1: cprintf("%d стр . Ожидается конец ст pоки ",cur_str); break; case 2: cprintf("%d стр . Ожидается TO", cur_str); break; case 3: cprintf("%d стр . Ожидается FOR",cur_str); break; case 4: cprintf("%d стр . Ожидается идентификатор ",cur_str); break; case 5: cprintf("%d стр . Ожидается ')'",cur_str); break; case 6: cprintf("%d стр . Ожидается '='",cur_str); break; case 7: cprintf("%d стр . Ожидается число , ид-р или выр-ие ",cur_str); break; case 8: cprintf("%d стр . Непредвиденный конец строки или файла ",cur_str); /************* ****************************************/ /* */ /* Функция считывания следующего символа */ /* */ /*************************************************** * */ void sc(void) next=fgetc(fd); /******************************************* ************/ /* */ /* Функция возв pащения считанного символ а в поток */ /* */ /*******************************************************/ void unsc(void) ungetc(next,fd); /*************************************************/ /* */ /* Функция п pопуска текущего слова */ /* */ /************************************************/ void next_lex(void) sc(); while(next!=' ') sc(); // считывать до 1-го п pобела unsc(); /**********************************************/ /* */ /* Функция удаления п pобелов */ /* */ / **********************************************/ void del_space(void) char liter; liter=fgetc(fd); while((isspace(liter))) liter=fgetc(fd); // считывать пока п pобелы ungetc(liter,fd); void main() clrscr(); for (;;) // бесконечный цикл switch (menu(27,8,"Выбе pите нужное ",ss)) // вывести меню case 0 : about(); break; case 1 : grammatic(); break; case 2 : language(); break; case 3 : load(); break; default : quit();
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Продается лента липучка. Новая - муха не сидела.
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, курсовая по программированию "Реализация языкового процессора оператора FOR языка BASIC", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru