Реферат: Оператор присваивания языка 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"">

В.Н. Лебедев «Введение в системы программирования»
еще рефераты
Еще работы по программированию, базе данных