Реферат: Оператор присваивания языка FORTRAN
Министерство науки, высшей школы и технической политики РоссийскойФедерации.
Новосибирский Государственный
Технический Университет.
<img src="/cache/referats/1180/image002.jpg" v:shapes="_x0000_i1025">
<span ER Architect 1251"">Курсовая работа по системномупрограммированию.
Операторприсваивания языка FORTRAN.
Факультет: АВТ.
Кафедра: АСУ.
Группа: А-513.
Студент: ЕфименкоДенис Владимирович.
Преподаватель:Шорников Юрий Владимирович.
Ассистент: ПановаВера Борисовна.
Дата:10 июня1997 года.
Отметка озащите: _______________________________
<span Old-Town",«serif»">
<span Old-Town",«serif»">
Новосибирск– 1997.<span Old-Town",«serif»">
<span Arial",«sans-serif»; mso-fareast-font-family:«Times New Roman»;mso-bidi-font-family:«Times New Roman»; mso-font-kerning:14.0pt;mso-ansi-language:RU;mso-fareast-language:RU; mso-bidi-language:AR-SA"><span Courier New";mso-bidi-font-family:«Times New Roman»">Языкоператора.
<span Courier New";mso-bidi-font-family:«Times New Roman»">Язык оператораприсваивания
<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">FORTRAN.<span Courier New";mso-bidi-font-family:«Times New Roman»"><span Courier New";mso-bidi-font-family:«Times New Roman»">
<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»">Идентификатор= арифметическое выражение
<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»">
<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»">Арифметическоевыражение – выражение, содержащее в себе операции *, /, -, +, **, а также ( ).
<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»">
<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»">** –возведение в степень.
<span Courier New";mso-bidi-font-family:«Times New Roman»">Грамматикаязыка.<span Courier New";mso-bidi-font-family:«Times New Roman»">
<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">G[<
<span Courier New";mso-bidi-font-family:«Times New Roman»">ОПЕРАТОР<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">>]<span Courier New"; mso-bidi-font-family:«Times New Roman»">:<span Courier New"; mso-fareast-font-family:«Courier New»">1.
<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"><<span Courier New"; mso-bidi-font-family:«Times New Roman»">ОПЕРАТОР<span Courier New";mso-bidi-font-family:«Times New Roman»;mso-ansi-language: EN-US">><span Courier New"; mso-bidi-font-family:«Times New Roman»"> <span Courier New";mso-hansi-font-family: «Courier New»;mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family: Symbol">®<span Courier New";mso-bidi-font-family:«Times New Roman»"><span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US"><<span Courier New";mso-bidi-font-family:«Times New Roman»">ИДЕНТИФИКАТОР<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">><span Courier New"; mso-bidi-font-family:«Times New Roman»"> = <span Courier New";mso-bidi-font-family:«Times New Roman»;mso-ansi-language: EN-US"><<span Courier New"; mso-bidi-font-family:«Times New Roman»">ВЫРАЖЕНИЕ<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">><span Courier New"; mso-bidi-font-family:«Times New Roman»"><span Courier New"; mso-fareast-font-family:«Courier New»">2.
<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"><<span Courier New"; mso-bidi-font-family:«Times New Roman»">ВЫРАЖЕНИЕ<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">><span Courier New"; mso-bidi-font-family:«Times New Roman»"> <span Courier New";mso-hansi-font-family: «Courier New»;mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family: Symbol">®<span Courier New";mso-bidi-font-family:«Times New Roman»"> Т<span Courier New";mso-hansi-font-family: «Courier New»;mso-char-type:symbol;mso-symbol-font-family:Symbol">ç<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"><<span Courier New"; mso-bidi-font-family:«Times New Roman»">ВЫРАЖЕНИЕ<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">><span Courier New"; mso-bidi-font-family:«Times New Roman»">+Т <span Courier New";mso-hansi-font-family:«Courier New»; mso-char-type:symbol;mso-symbol-font-family:Symbol">ç<span Courier New";mso-bidi-font-family:«Times New Roman»"> <span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"><<span Courier New"; mso-bidi-font-family:«Times New Roman»">ВЫРАЖЕНИЕ<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">><span Courier New";mso-hansi-font-family:«Courier New»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">-<span Courier New";mso-bidi-font-family:«Times New Roman»">Т<span Courier New"; mso-fareast-font-family:«Courier New»">3.
<span Courier New";mso-bidi-font-family:«Times New Roman»">Т <span Courier New"; mso-hansi-font-family:«Courier New»;mso-ansi-language:EN-US;mso-char-type:symbol; mso-symbol-font-family:Symbol">®<span Courier New"; mso-bidi-font-family:«Times New Roman»"> О <span Courier New";mso-hansi-font-family:«Courier New»; mso-char-type:symbol;mso-symbol-font-family:Symbol">ç<span Courier New";mso-bidi-font-family:«Times New Roman»">Т<span Courier New";mso-hansi-font-family: «Courier New»;mso-char-type:symbol;mso-symbol-font-family:Symbol">*<span Courier New";mso-bidi-font-family:«Times New Roman»">О <span Courier New";mso-hansi-font-family: «Courier New»;mso-char-type:symbol;mso-symbol-font-family:Symbol">ç<span Courier New";mso-bidi-font-family:«Times New Roman»"> Т<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">/<span Courier New"; mso-bidi-font-family:«Times New Roman»">О <span Courier New";mso-hansi-font-family:«Courier New»; mso-char-type:symbol;mso-symbol-font-family:Symbol">ê<span Courier New";mso-bidi-font-family:«Times New Roman»">Т<span Courier New";mso-hansi-font-family: «Courier New»;mso-char-type:symbol;mso-symbol-font-family:Symbol">**<span Courier New";mso-bidi-font-family:«Times New Roman»">О<span Courier New"; mso-fareast-font-family:«Courier New»">4.
<span Courier New";mso-bidi-font-family:«Times New Roman»">О <span Courier New"; mso-hansi-font-family:«Courier New»;mso-ansi-language:EN-US;mso-char-type:symbol; mso-symbol-font-family:Symbol">®<span Courier New"; mso-bidi-font-family:«Times New Roman»">(<span Courier New";mso-bidi-font-family:«Times New Roman»;mso-ansi-language: EN-US"><<span Courier New"; mso-bidi-font-family:«Times New Roman»">ВЫРАЖЕНИЕ<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">><span Courier New"; mso-bidi-font-family:«Times New Roman»">) <span Courier New";mso-hansi-font-family:«Courier New»; mso-char-type:symbol;mso-symbol-font-family:Symbol">ç<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"><<span Courier New"; mso-bidi-font-family:«Times New Roman»">ИДЕНТИФИКАТОР<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">> <span Courier New";mso-hansi-font-family:«Courier New»; mso-char-type:symbol;mso-symbol-font-family:Symbol">ç<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"><<span Courier New"; mso-bidi-font-family:«Times New Roman»">ДБЗ<span Courier New";mso-bidi-font-family:«Times New Roman»;mso-ansi-language: EN-US">><span Courier New"; mso-bidi-font-family:«Times New Roman»"><span Courier New"; mso-fareast-font-family:«Courier New»">5.
<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"><<span Courier New"; mso-bidi-font-family:«Times New Roman»">ИДЕНТИФИКАТОР<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">><span Courier New"; mso-bidi-font-family:«Times New Roman»"> <span Courier New";mso-hansi-font-family: «Courier New»;mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family: Symbol">®<span Courier New";mso-bidi-font-family:«Times New Roman»"> Б<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">{<span Courier New"; mso-bidi-font-family:«Times New Roman»">Б <span Courier New";mso-hansi-font-family:«Courier New»; mso-char-type:symbol;mso-symbol-font-family:Symbol">ç<span Courier New";mso-bidi-font-family:«Times New Roman»">Ц<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">}[<span Courier New";mso-hansi-font-family:«Courier New»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">L<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">]<span Courier New"; mso-bidi-font-family:«Times New Roman»"><span Courier New"; mso-fareast-font-family:«Courier New»">6.
<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"><<span Courier New"; mso-bidi-font-family:«Times New Roman»">ДБЗ<span Courier New";mso-bidi-font-family:«Times New Roman»;mso-ansi-language: EN-US">><span Courier New"; mso-bidi-font-family:«Times New Roman»"> <span Courier New";mso-hansi-font-family: «Courier New»;mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family: Symbol">®<span Courier New";mso-bidi-font-family:«Times New Roman»"> Ц<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">{<span Courier New"; mso-bidi-font-family:«Times New Roman»">Ц<span Courier New";mso-bidi-font-family:«Times New Roman»;mso-ansi-language: EN-US">}[<span Courier New"; mso-bidi-font-family:«Times New Roman»">.Ц<span Courier New";mso-bidi-font-family:«Times New Roman»;mso-ansi-language: EN-US">{<span Courier New"; mso-bidi-font-family:«Times New Roman»">Ц<span Courier New";mso-bidi-font-family:«Times New Roman»;mso-ansi-language: EN-US">}][<span Courier New";mso-hansi-font-family:«Courier New»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">L<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">]<span Courier New"; mso-bidi-font-family:«Times New Roman»"><span Courier New";mso-bidi-font-family:«Times New Roman»">
<span Courier New";mso-bidi-font-family:«Times New Roman»">Т
<span Courier New";mso-bidi-font-family:«Times New Roman»">–
<span Courier New"; mso-bidi-font-family:«Times New Roman»">ТЕРМ
<span Courier New";mso-bidi-font-family:«Times New Roman»">О
<span Courier New";mso-bidi-font-family:«Times New Roman»">–
<span Courier New"; mso-bidi-font-family:«Times New Roman»">ОПЕРАНД
<span Courier New";mso-bidi-font-family:«Times New Roman»">Б
<span Courier New";mso-bidi-font-family:«Times New Roman»">–
<span Courier New"; mso-bidi-font-family:«Times New Roman»">БУКВА
<span Courier New";mso-bidi-font-family:«Times New Roman»">Ц
<span Courier New";mso-bidi-font-family:«Times New Roman»">–
<span Courier New"; mso-bidi-font-family:«Times New Roman»">ЦИФРА
<span Courier New";mso-bidi-font-family:«Times New Roman»">ДБЗ
<span Courier New";mso-bidi-font-family:«Times New Roman»">–
<span Courier New"; mso-bidi-font-family:«Times New Roman»">ДРОБНОЕ БЕЗ ЗНАКА
<span Courier New";mso-hansi-font-family: «Courier New»;mso-char-type:symbol;mso-symbol-font-family:Symbol">L
<span Courier New";mso-bidi-font-family:«Times New Roman»"><span Courier New";mso-bidi-font-family: «Times New Roman»;mso-ansi-language:EN-US">–
<span Courier New";mso-bidi-font-family:«Times New Roman»"><span Courier New"; mso-bidi-font-family:«Times New Roman»">КОНЕЦ СТРОКИ (пусто)
<span Courier New";mso-bidi-font-family:«Times New Roman»">**
<span Courier New";mso-bidi-font-family:«Times New Roman»">–
<span Courier New"; mso-bidi-font-family:«Times New Roman»">ВОЗВЕДЕНИЕ В СТЕПЕНЬ
<span Courier New";mso-bidi-font-family:«Times New Roman»">
<span Arial",«sans-serif»;mso-fareast-font-family: «Times New Roman»;mso-bidi-font-family:«Times New Roman»;mso-font-kerning:14.0pt; mso-ansi-language:EN-US;mso-fareast-language:RU;mso-bidi-language:AR-SA"><span Courier New";mso-bidi-font-family:«Times New Roman»">Классификацияграмматики.
Данная грамматика G[<ОПЕРАТОР>],согласно классификации Хомского, является контекстно-свободной, так как праваячасть каждой редукции начинается либо с терминального символа, либо снетерминального, принадлежащего объединённому словарю.
A <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">®
a, A<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-ansi-language:EN-US;mso-char-type: symbol;mso-symbol-font-family:Symbol">ÎVn, a<span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family: Symbol">ÎV<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-ansi-language:EN-US;mso-char-type: symbol;mso-symbol-font-family:Symbol">*.Грамматика G[<ОПЕРАТОР>]неявляется автоматной, так как не все её редукции начинаются с терминальногосимвола. По этой же причине данная грамматика не является S-грамматикой.
<span Courier New";mso-bidi-font-family:«Times New Roman»">Методанализа.Для данной грамматикиреализован разбор методом рекурсивного спуска, поскольку она относится к классуконтекстно-свободных.
Идеяметода состоит в том, что каждому нетерминальному символу ставится всоответствие определённая программная единица (функция), которая распознаётцепочку, порождаемую этим нетерминалом.
Этипроцедуры и функции вызываются в соответствии с правилами грамматики и иногдавызывают сами себя.
Данныйметод реализован на языке C++, поскольку он обладаетрекурсивными возможностями.
<span Arial",«sans-serif»;mso-fareast-font-family: «Times New Roman»;mso-bidi-font-family:«Times New Roman»;mso-font-kerning:14.0pt; mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language:AR-SA"><span Courier New";mso-bidi-font-family:«Times New Roman»">Диагностикаи нейтрализация ошибок.
Для данной грамматикипроизводится только диагностика и нейтрализация ошибок. Исправление ошибок непроизводится.
Нейтрализация ошибокосуществляется по методу Айронса, то есть, спускаясь по синтаксическому деревубез возврата по контексту, при обнаружении тупиковой ситуации отбрасываются телитеры (символы), которые привели в тупиковую ситуацию и разбор продолжается.
<span Courier New";mso-bidi-font-family:«Times New Roman»">Тестирование.12=1
Имя идентификатора должно начинаться с буквы.
---------------------------------------------------------
s223=(s)+(((d)))
ОШИБОК НЕТ!!!!!
---------------------------------------------------------
sdsds=skshj**mxnx dc
Пропущена операция или неправильное имяидентификатора.
---------------------------------------------------------
;;=0
Имя идентификатора должно начинаться с буквы.
Идентификатор состоит только из букв или цифр.
---------------------------------------------------------
as=115/3
ОШИБОК НЕТ!!!!!
---------------------------------------------------------
32=-*=
Имя идентификатора должно начинаться с буквы.
Пропущен идентификатор или число.
Пропущен идентификатор или число.
Неизвестная операция или неправильное имяидентификатора.
Пропущен идентификатор или число.
---------------------------------------------------------
sdvsf+gsdf=0
Слевa от '='операций быть не может .
---------------------------------------------------------
jhg=321+321/54*4(s+25)
Пропущена операция или неправильное имяидентификатора.
---------------------------------------------------------
d56gfsdfg=(ld+5
Длина имени идентификатора не должна быть больше 6.
Отсутствует ')'.
---------------------------------------------------------
<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-no-proof:yes">Листинг программы.// SP_KURS.CPP: КУРСОВАЯ РАБОТА ПО СИСТЕМНОМУПРОГРАММИРОВАНИЮ. //
// ОПЕРАТОР ПРИСВАИВАНИЯ ЯЗЫКА«ФОРТРАН» //
// имя файла test
#include<process.h>
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
#include<conio.h>
#include<io.h>
#define UP 72 /*стрелка вверх */
#define DOWN 80 /* стрелка вниз */
#define EXIT '33' /*Esc */
#define END 100
enumLEX{ERROR,CBZ,ID,PLUS,MIN,DIV,MUL,STEP,SKL,SKR,RAV,_EOLN_,_EOF_};
intnext,number=0,num=0,temp,line=1,err[80],sum;
int mistake[15][80],ofset=0;
char cordinat[80][80],filename[80];
char*type_mis[]={«ОШИБОК НЕТ!!!!!»,
«Имя идентификаторадолжно начинаться с буквы.»,
«Идентификатор состоиттолько из букв или цифр.»,
«Слевa от '='операцийбыть не может .»,
«Неизвестная конструкция(нет '=').»,
«Длина имениидентификатора не должна быть больше 6.»,
«Отсутствует ')'.»,
«Неизвестная операцияили неправильное имя идентификатора.»,
«Пропущен идентификаторили число.»,
«Отсутствует '('.»,
«Пропущена операция илинеправильное имя идентификатора.»,
«Отсутствует выражение(А=?). »,
«Отсутствует идентификатор(?=B).»,
" ",};
const intX1=2,Y1=20,X2=80,Y2=25;
const int YWINDOW=Y2-Y1+1;
void viewwin(int ,int );
void putmistake(int );
int MENU(char *);
void identif();
void ravno();
void expr(void);
void term(void);
void operand(void);
int scaner(void);
void error(int);
void makefile(void);
FILE *in,*out;
void main(void)
{strcpy(cordinat[0],«n»);
mistake[0][0]=13;mistake[0][1]=END;
clrscr();
printf(«Введите имя обрабатываемого файла:»);
gets(filename);
if((in=fopen(filename,«r»))==NULL)
{printf(«n ОШИБКА!!! ФАЙЛ С ТАКИМ ИМЕНЕМНЕ СУЩЕСТВУЕТ!!!»);
exit(-1);
}
while(!feof(in))
{ravno();
mistake[line][ofset]=END;
line++;
ofset=0;
}
fcloseall();
makefile();
num=0;
window(1,1,80,25);
clrscr();
gotoxy(1,1);
MENU(" ОПЕРАТОР ПРИСВАИВАНИЯ ЯЗЫКА/"«ФОРТРАН/»«n»);
clrscr();
window(1,1,80,25);
clrscr();
printf(«nnnnnnnnnn ВСЕ ОШИБКИ ХРАНЯТЬСЯ В ФАЙЛЕ/»«ERRORS.TXT/»"!!!!!");
printf(«nnnnnnnnnn НАЖМИТЕ ЛЮБУЮКЛАВИШУ!!!!!! »);
fcloseall();
exit(1);
}
void ravno()
{temp=0;
num=0;
sum=0;
next=scaner();
if((next!=_EOLN_)&&(next!=_EOF_))
{if(next==RAV)
{error(12);
err[0]=END;
}
else identif();
if(next!=RAV) error(4);
else
{temp=1;
if(err[0]!=END)
{if(err[0]!=ID)error(1);
for(inti=1;i<sum;i++)
{next=err[i];
identif();
}
}
temp=2;
next=scaner();
if((next==_EOF_)||(next==_EOLN_)) error(11);
else
{while(1)
{expr();
if(next==SKL) error(10);
else
{if(next==SKR)
{error(9);
next=scaner();
}
if(next==ID)
{error(10);
next=scaner();
}
if(next==ERROR) error(7);
if((next==_EOF_)||(next==_EOLN_)) break;
next=scaner();
}//else
} //while
} //else
}//else
}//if
elsemistake[line][ofset++]=13;
}
int scaner(void)
{int liter;
liter=fgetc(in);
num++;
if((isspace(liter))||(liter=='t'))
{while((isspace(liter))||(liter=='t'))
{if(liter=='n') return(11);
liter=fgetc(in);
}
}
if(isdigit(liter))
{while(isdigit(liter))
{liter=fgetc(in);
num++;
}
if(liter=='.')
{liter=fgetc(in);
while(isdigit(liter))
{liter=fgetc(in);
num++;
}
ungetc(liter,in);
num--;
return(1);
}
else
{if(isalpha(liter))
{number=0;
while(isalnum(liter))
{number++;
num++;
liter=fgetc(in);
}
ungetc(liter,in);
num--;
return(2);
}
else switch(liter)
{case '+':num=0;return(3);
case'-':num=0;return(4);
case'/':num=0;return(5);
case '*':num=0;
if((liter=fgetc(in))=='*') return(7);
else
{ungetc(liter,in);
return(6);
}
case '(':return(8);
case')':return(9);
case'=':return(10);
case'n':return(11);
caseEOF:return(12);
default:return(0);
}
}//else
}
// РАСПОЗНАЕТ ОШИБКИ В ИДЕНТИФИКАТОРЕ.
void identif(void)
{if(temp==0)
{while((next!=RAV)&&(next!=_EOLN_)&&(next!=_EOF_))
{err[sum]=next;
sum++;
next=scaner();
}
}
if(temp==1)
{if((next!=CBZ)&&(next!=ID))
{if(next==ERROR)error(2);
else error(3);
}
number=num-1;
num=0;
}
if(number>6) error(5);
}
// НЕТЕРМИНАЛ«O» <Операнд>
void operand()
{if(next==SKL)
{next=scaner();
expr();
if(next!=SKR) error(6);
else next=scaner();
}
else
{if(next==ID){identif();next=scaner();}
else
{if(next!=CBZ)
{if((next!=_EOLN_)&&(next!=_EOF_))
{if(next==ERROR)
{error(7);
next=scaner();
operand();
}
else
{if(next==RAV) error(7);
else error(8);
}
}
else error(8);
}
else next=scaner();
}//else
}//else
}
// НЕТEРМИНАЛ«Е» <Выражение>
void expr(void)
{term();
while((next==PLUS)||(next==MIN))
{next=scaner();
expr();
}
}
// НЕТЕРМИНАЛ«T» <Терм>
void term(void)
{operand();
while((next==DIV)||(next==MUL)||(next==STEP))
{next=scaner();
term();
}
}
void error(int choice)
{switch(choice)
{case 1:mistake[line][ofset++]=1; break;
case 2:mistake[line][ofset++]=2; break;
case 3:mistake[line][ofset++]=3; break;
case 4:mistake[line][ofset++]=4; break;
case 5:mistake[line][ofset++]=5; break;
case 6:mistake[line][ofset++]=6; break;
case 7:mistake[line][ofset++]=7; break;
case 8:mistake[line][ofset++]=8; break;
case 9:mistake[line][ofset++]=9; break;
case 10:mistake[line][ofset++]=10; break;
case 12:mistake[line][ofset++]=12; break;
case 11:mistake[line][ofset++]=11; break;
default:break;
}
}
void makefile(void)
{char *s;
int num_str=0,oftemp,rep;
if((out=fopen(«errors.txt»,«w»))==NULL)
{printf(«n ОШИБКА!!! ФАЙЛ С ТАКИМ ИМЕНЕМНЕ СУЩЕСТВУЕТ!!!»);
exit(-1);
}
if((in=fopen(filename,«r»))==NULL)
{printf(«n ОШИБКА!!! ФАЙЛ НЕЛЬЗЯ ОТКРЫТЬДЛЯ ЗАПИСИ!!!»);
exit(-1);
}
while(num_str++,fgets(s,80,in)!=NULL)
{fputs("\---------------------------------------------------------\",out);
fputc('n',out);
fputs(s,out);
fputc('n',out);
rep=strlen(s);
s[rep-1]='';
strcpy(cordinat[num_str],s);
if((oftemp=mistake[num_str][0])==END)
{fputs(type_mis[0],out);
fputc('n',out);
}
else
{for(int k=0;mistake[num_str][k]!=END;k++)
{oftemp=mistake[num_str][k];
fputs(type_mis[oftemp],out);
fputc('n',out);
}
}
}
fputs("\---------------------------------------------------------\",out);
fputc('n',out);
fcloseall();
}
// MENU
int MENU(char*s)
{int dy,n;
dy=line-1;
textbackground(WHITE);
textcolor(YELLOW);
window(1,1,80,25);
clrscr();
gotoxy(2,1);
cprintf(" SDenisn ");
gotoxy(2,2);
cputs(s);
gotoxy(2,3);
cprintf(«Используйте курсор вверх/вниздля выбора просматриваемой строки.n»);
gotoxy(2,4);
cprintf(" — для просмотраошибок в строке(строка выделяется). n");
gotoxy(2,5);
cprintf(" — выход.n");
gotoxy(2,6);
textbackground(WHITE);
textcolor(RED);
cprintf("******************** ОШИБКИ В СТРОКАХ *************************n");
textbackground(WHITE);
textcolor(YELLOW);
gotoxy(2,19);
cprintf("******************* СТРОКИ ВАШЕГО ФАЙЛА ****************************n");
window(X1,Y1,X2,Y2);
textcolor(BLACK);
viewwin(0,YWINDOW);
n = 0;
int Y=1;
while(1)
{char c;
gotoxy(1,Y);
textbackground(GREEN);
cprintf("%s",cordinat[n]);
textbackground(WHITE);
c=(c=getch())==0?c=getch():c;
gotoxy(1,Y);
cprintf("%s",cordinat[n]);
switch (c)
{case EXIT:
return(-1);
case'r': /*enter*/
window(2,7,80,18);
clrscr();
putmistake(n);
window(X1,Y1,X2,Y2);
break;
caseUP:
if(Y==1) viewwin(n>0?n-1:n,YWINDOW);
else Y--;
if(n>0) n--;
break;
case DOWN:
if(Y==YWINDOW) viewwin((n==dy?n:n+1)-YWINDOW+1,YWINDOW);
else Y++;
if(n+1==dy)
{n=0;
Y=1;
viewwin(n,YWINDOW);
}
else n++;
break;
}
}
}
void viewwin(int num,int numline)
{clrscr();
for(int a=0;a<numline;a++)
{gotoxy(1,a+1);
cprintf("%s",cordinat[num++]);
}
}
void putmistake(int n)
{int offtemp,x=1,y=1;
if((offtemp=mistake[n][0])==END)
{cprintf("%s",type_mis[0]);
}
else
{for(int k=0;mistake[n][k]!=END;k++)
{offtemp=mistake[n][k];
if(offtemp==13)cprintf("%sn",type_mis[offtemp]);
else
{cprintf("%d.%sn",k+1,type_mis[offtemp]);
x++;
y++;
gotoxy(x,y);
}
}
}
}
<span Arial",«sans-serif»;mso-fareast-font-family: «Times New Roman»;mso-bidi-font-family:«Times New Roman»;mso-font-kerning:14.0pt; mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language:AR-SA; mso-no-proof:yes"><span Courier New";mso-bidi-font-family:«Times New Roman»">Литература.
1.<span Times New Roman"">
Курс лекций по системному программированию.2.<span Times New Roman"">
Герберт Шилдт «Cдля профессиональныхпрограммистов».3.<span Times New Roman"">
В.Н. Лебедев «Введение в системы программирования»