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

Курсовая

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

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

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

закрыть
Категория: Курсовая работа
Язык курсовой: Русский
Дата добавления:   
 
Скачать
Microsoft Word, 241 kb, скачать бесплатно
Обойти Антиплагиат
Повысьте уникальность файла до 80-100% здесь.
Промокод referatbank - cкидка 20%!
Заказать
Узнать стоимость написания уникальной курсовой работы

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

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 - 2017
Рейтинг@Mail.ru