.

Разработка синтаксического распознавателя вычисляемого оператора перехода языка FORTRAN

Язык: русский
Формат: реферат
Тип документа: Word Doc
0 558
Скачать документ

Ieienoa?noai iaoee, aunoae oeieu e oaoie/aneie iieeoeee ?inneeneie
Oaaea?aoeee.

Iiaineae?neee Ainoaea?noaaiiue

Oaoie/aneee Oieaa?neoao.

Eo?niaay ?aaioa ii nenoaiiiio i?ia?aiie?iaaieth.

?ac?aaioea neioaene/aneiai ?aniiciaaaoaey au/eneyaiiai iia?aoi?a
ia?aoiaea ycuea FORTRAN.

Oaeoeueoao: AAO.

Eaoaae?a: ANO.

A?oiia: A-513.

Nooaeaio: Ai?cia Aiae?ae Ieeieaaae/.

I?aiiaeaaaoaeue: Oi?ieeia TH?ee Aeaaeeie?iae/.

Annenoaio: Iaiiaa Aa?a Ai?eniaia.

Aeaoa: 19 iay 1997 aiaea.

Ioiaoea i caueoa: _______________________________

Iiaineae?ne – 1997.

sscue iia?aoi?a.

sscue au/eneyaiiai iia?aoi?a ia?aoiaea ycuea FORTRAN.

GOTO IAOEA(EIINOAIOA(A?EOIAOE*ANEIA AU?AAEAIEA

IAOEA – Eaeaioeoeeaoi?

EIINOAIOA – OeAEIA AAC CIAEA

A?EOIAOE*ANEIA AU?AAEAIEA – AU?AAEAIEA, NIAeA?AEAUAA A NAAA IIA?AOeEE *,
/, -, +, **, A OAEAEA ( ).

** – AICAAAeAIEA A NOAIAIUe.

A?aiiaoeea ycuea.

G[]:

( GOTO

( O (+O ( (O

O ( I (O(I ( O/I (O((I

I (() ( (

( A{A (Oe}[(]

( Oe{Oe}[.Oe{Oe}][(]

O – OA?I

I – IIA?AIAe

A – AOEAA

Oe – OeEO?A

AeAC – Ae?IAIIA AAC CIAEA

( – EIIAOe NO?IEE (ionoi)

** – AICAAAeAIEA A NOAIAIUe

Eeanneoeeaoeey a?aiiaoeee.

Aeaiiay a?aiiaoeea G[], niaeanii eeanneoeeaoeee Oiineiai,
yaeyaony eiioaenoii-naiaiaeiie, oae eae i?aaay /anoue eaaeaeie
?aaeoeoeee ia/eiaaony eeai n oa?ieiaeueiiai neiaiea, eeai n
iaoa?ieiaeueiiai, i?eiaaeeaaeauaai iauaaeei?iiiio neiaa?th.

A ( a, A(Vn, a(V(.

A?aiiaoeea G[] ia yaeyaony aaoiiaoiie, oae eae ia ana a?
?aaeoeoeee ia/eiathony n oa?ieiaeueiiai neiaiea. Ii yoie aea i?e/eia
aeaiiay a?aiiaoeea ia yaeyaony S – a?aiiaoeeie.

Iaoiae aiaeeca.

Aeey aeaiiie a?aiiaoeee ?aaeeciaai ?acai? iaoiaeii ?aeo?neaiiai nionea,
iineieueeo iia ioiineony e eeanno eiioaenoii-naiaiaeiuo.

Eaeay iaoiaea ninoieo a oii, /oi eaaeaeiio iaoa?ieiaeueiiio neiaieo
noaaeony a niioaaonoaea ii?aaeae?iiay i?ia?aiiiay aaeeieoea (ooieoeey),
eioi?ay ?aniicia?o oeaii/eo, ii?iaeaeaaioth yoei iaoa?ieiaeii.

Yoe i?ioeaaeo?u e ooieoeee aucuaathony a niioaaonoaee n i?aaeeaie
a?aiiaoeee e eiiaaea aucuaatho naie naay.

Aeaiiue iaoiae ?aaeeciaai ia ycuea C++, iineieueeo ii iaeaaeaao
?aeo?neaiuie aiciiaeiinoyie.

Aeeaaiinoeea e iaeo?aeecaoeey ioeaie.

Aeey aeaiiie a?aiiaoeee i?iecaiaeeony oieueei aeeaaiinoeea e
iaeo?aeecaoeey ioeaie. Eni?aaeaiea ioeaie ia i?iecaiaeeony.

Iaeo?aeecaoeey ioeaie inouanoaeyaony ii iaoiaeo Ae?iina, oi anoue,
nioneaynue ii neioaene/aneiio aea?aao aac aica?aoa ii eiioaenoo, i?e
iaia?oaeaiee ooieeiaie neooaoeee ioa?anuaathony oa eeoa?u (neiaieu),
eioi?ua i?eaaee a ooieeiaoth neooaoeeth e ?acai? i?iaeieaeaaony.

Oanoe?iaaiea.

((((((((((((((((((((((((((((((((((((((((

I?ioieie ?aaiou neioaene/aneiai ?aniiciaaaoaey au/eneyaiiai iia?aoi?a
ia?aoiaea ycuea FORTRAN.

((((((((((((((((((((((((((((((((((((((((

GOTO A+B-DD**(CC/(23+34**R))+Y*((C))

((((((((((((((((((((((((((((((((((((((((

AB – I?iaa?ea ia A?eoiaoe/aneia Au?aaeaiea.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘A’ n eiaeii 65.

T – I?iaa?ea ia Oa?i.

O – I?iaa?ea ia Iia?aiae.

IDENT – I?iaa?ea ia Eaeaioeoeeaoi? n neiaiea A.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘+’ n eiaeii 43.

AB – I?iaa?ea ia A?eoiaoe/aneia Au?aaeaiea.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘B’ n eiaeii 66.

T – I?iaa?ea ia Oa?i.

O – I?iaa?ea ia Iia?aiae.

IDENT – I?iaa?ea ia Eaeaioeoeeaoi? n neiaiea B.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘-‘ n eiaeii 45.

AB – I?iaa?ea ia A?eoiaoe/aneia Au?aaeaiea.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘D’ n eiaeii 68.

T – I?iaa?ea ia Oa?i.

O – I?iaa?ea ia Iia?aiae.

IDENT – I?iaa?ea ia Eaeaioeoeeaoi? n neiaiea D.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘D’ n eiaeii 68.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘*’ n eiaeii 42.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘*’ n eiaeii 42.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘(‘ n eiaeii 40.

T – I?iaa?ea ia Oa?i.

O – I?iaa?ea ia Iia?aiae.

AB – I?iaa?ea ia A?eoiaoe/aneia Au?aaeaiea.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘C’ n eiaeii 67.

T – I?iaa?ea ia Oa?i.

O – I?iaa?ea ia Iia?aiae.

IDENT – I?iaa?ea ia Eaeaioeoeeaoi? n neiaiea C.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘C’ n eiaeii 67.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘/’ n eiaeii 47.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘(‘ n eiaeii 40.

T – I?iaa?ea ia Oa?i.

O – I?iaa?ea ia Iia?aiae.

AB – I?iaa?ea ia A?eoiaoe/aneia Au?aaeaiea.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘2’ n eiaeii 50.

T – I?iaa?ea ia Oa?i.

O – I?iaa?ea ia Iia?aiae.

IDENT – I?iaa?ea ia Eaeaioeoeeaoi? n neiaiea 2.

FLOAT – I?iaa?ea ia Ae?iaiia Aac Ciaea n oeeo?u 2.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘3’ n eiaeii 51.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘+’ n eiaeii 43.

AB – I?iaa?ea ia A?eoiaoe/aneia Au?aaeaiea.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘3’ n eiaeii 51.

T – I?iaa?ea ia Oa?i.

O – I?iaa?ea ia Iia?aiae.

IDENT – I?iaa?ea ia Eaeaioeoeeaoi? n neiaiea 3.

FLOAT – I?iaa?ea ia Ae?iaiia Aac Ciaea n oeeo?u 3.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘4’ n eiaeii 52.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘*’ n eiaeii 42.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘*’ n eiaeii 42.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘R’ n eiaeii 82.

T – I?iaa?ea ia Oa?i.

O – I?iaa?ea ia Iia?aiae.

IDENT – I?iaa?ea ia Eaeaioeoeeaoi? n neiaiea R.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘)’ n eiaeii 41.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘)’ n eiaeii 41.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘+’ n eiaeii 43.

AB – I?iaa?ea ia A?eoiaoe/aneia Au?aaeaiea.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘Y’ n eiaeii 89.

T – I?iaa?ea ia Oa?i.

O – I?iaa?ea ia Iia?aiae.

IDENT – I?iaa?ea ia Eaeaioeoeeaoi? n neiaiea Y.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘*’ n eiaeii 42.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘(‘ n eiaeii 40.

T – I?iaa?ea ia Oa?i.

O – I?iaa?ea ia Iia?aiae.

AB – I?iaa?ea ia A?eoiaoe/aneia Au?aaeaiea.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘(‘ n eiaeii 40.

T – I?iaa?ea ia Oa?i.

O – I?iaa?ea ia Iia?aiae.

AB – I?iaa?ea ia A?eoiaoe/aneia Au?aaeaiea.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘C’ n eiaeii 67.

T – I?iaa?ea ia Oa?i.

O – I?iaa?ea ia Iia?aiae.

IDENT – I?iaa?ea ia Eaeaioeoeeaoi? n neiaiea C.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘)’ n eiaeii 41.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘)’ n eiaeii 41.

SCAN – Neaie?iaaiea. Oaeouee neiaie NULL n eiaeii 0.

((((((((((((((((((((((((((((((((((((((((

((((((((((((((((((((((((((((((((((((((((

GOTO A

((((((((((((((((((((((((((((((((((((((((

AB – I?iaa?ea ia A?eoiaoe/aneia Au?aaeaiea.

SCAN – Neaie?iaaiea. Oaeouee neiaie ‘A’ n eiaeii 65.

T – I?iaa?ea ia Oa?i.

O – I?iaa?ea ia Iia?aiae.

IDENT – I?iaa?ea ia Eaeaioeoeeaoi? n neiaiea A.

SCAN – Neaie?iaaiea. Oaeouee neiaie NULL n eiaeii 0.

((((((((((((((((((((((((((((((((((((((((

Eenoeia i?ia?aiiu.

//(((((((((((((((((((((((((((((((((((((((

// FILE “KURSOVIK.CPP”.

//(((((((((((((((((((((((((((((((((((((((

// AA?EAHO ? 3.

//(((((((((((((((((((((((((((((((((((((((

// Iia?aoi? ia?aoiaea au/eneyaiue ycuea FORTRAN.

//(((((((((((((((((((((((((((((((((((((((

// Eaoaae?a: ANO.

// A?oiia: A-513.

// Nooaeaio: Ai?cia Aiae?ae Heeieaaae/.

// I?aiiaeaaaoaee: eaiaeeaeao oaoie/aneeo iaoe, aeioeaio Oi?ieeia TH?ee
Aeaaeeie?iae/,

// annenoaio Iaiiaa Aa?a Ai?eniaia.

// Aeaoa: 29 ai?aey 1997a.

//(((((((((((((((((((((((((((((((((((((((

// Iiaeeeth/aaiua oaeeu.

//(((((((((((((((((((((((((((((((((((((((

#include

#include

#include

#include

#include

#include

#include

#include”keyboard.h”

//(((((((((((((((((((((((((((((((((((((((

// Iae?iii?aaeaeaiey.

//(((((((((((((((((((((((((((((((((((((((

#define ERROR 0 // Eiae ioeaee.

#define COL_STR 20 // Iaeneiaeueiia eiee/anoai no?ie.

#define STR_LEN 35 // Aeeeia no?iee.

#define MAX_STR_LEN 255 // Iaeneiaeueiay aeeeia no?iee.

#define FILENAME “TEST.TXT” // Eiy oaeea, ioe?uaaaiiai ii oiie/aieth.

#define YES 1

#define NO 2

#define OK 3

//#define TEST // Ii?aaeaeaii, anee aeeth/ai ioeaaei/iue ?aaeei.

//(((((((((((((((((((((((((((((((((((((((

// I?ioioeiu ooieoeee.

//(((((((((((((((((((((((((((((((((((((((

int I_ReadKey(void); // Ii?in eeaaeaoo?u.

void Welcome(void); // Ye?ai i?e noa?oa i?ia?aiiu.

void Menu(void); // Iaith.

void Help(void); // Iiiiuue.

void MyExit(int=0); // Ei??aeoiue auoiae ec i?ia?aiiu.

void Beep(int=500,int=100); // Caoeiaie neaiae.

void Usage(void); // Eniieueciaaiea i?ia?aiiu.

int OpenFile(void); // Ioe?uoea oaeea.

void DrawBox(int,int,int,int,char*); // ?enoao ?aieo n caaieiaeii.

void PrintText(void); // Ia/aoaao iniiaiie oaeno.

void Screen(void); // Ia?a?eniaea ye?aia.

void Compile(void); // Eiiieeyoeey.

void Message(int); // Auaiae niiauaiee ia ioeaeao.

void MyPuts(char*,int); // Aiaeia puts(char*);.

void Language(void); // sscue iia?aoi?a.

void Grammar(void); // A?aiiaoeea ycuea.

void GetFilename(void); // Cai?in eiaie oaeea aeey ioe?uoey.

int ScanStr(char*); // Iiene GOTO.

int Scaner(char*); // Ia?aaioea no?iee.

void Scan(void); // Neaie?iaaiea neaaeothuaai neiaiea.

void Delspace(char*); // Oaeaeaiea iaioaeiuo i?iaaeia a no?iea.

int AB(void); // ?aaeecaoeey iaoa?ieiaea .

int T(void); // ?aaeecaoeey iaoa?ieiaea .

int O(void); // ?aaeecaoeey iaoa?ieiaea .

int IDENT(void); // ?aaeecaoeey iaoa?ieiaea .

int FLOAT(void); // ?aaeecaoeey iaoa?ieiaea .

void Error(int=0,char* =””); // Ia?aaioea ioeaee.

//(((((((((((((((((((((((((((((((((((((((

// Aeiaaeueiua ia?aiaiiua.

//(((((((((((((((((((((((((((((((((((((((

char filename[MAX_STR_LEN]; // Eiy oaeea.

char *text[COL_STR+1]; // Iannea oeacaoaeae ia no?iee oaenoa.

char screen[4096]; // Aooa? iiae eiieth ye?aia.

char mes[21][20][80]; // Iannea iiae niiauaiey ia ioeaeao.

char nx; // Oaeouee neiaie.

int pos; // Oaeouay iiceoeey a no?iea.

char STR[80]; // Neaie?oaiay no?iea.

int ERR1; // N/ao/ee no?aieoe a ianneaa ioeaie.

int ERR2; // N/ao/ee no?ie a ianneaa ioeaie.

FILE *errors; // Aeane?eioi? oaeea.

//(((((((((((((((((((((((((((((((((((((((

// Ooieoeey MAIN.

//(((((((((((((((((((((((((((((((((((((((

void main(int argc,char* argv[])

{

textcolor(LIGHTGRAY);

textbackground(BLACK);

_setcursortype(_NOCURSOR);

clrscr();

if(argc>2)

{

Usage();

MyExit();

}

if(argc==2)

strcpy(filename,argv[1]);

else

{

Welcome();

gettext(20,7,60,17,screen);

GetFilename();

}

while(OpenFile())

{

puttext(20,7,60,17,screen);

GetFilename();

}

Menu();

}

//(((((((((((((((((((((((((((((((((((((((

// Auaiae niiauaiee ia ioeaeao.

//(((((((((((((((((((((((((((((((((((((((

void Message(int j)

{

window(42,3,79,23);

textcolor(BLUE);

textbackground(CYAN);

clrscr();

for(int i=0;i -> GOTO \r\n”);

cputs(” 2. -> T | +T | -T\r\n”);

cputs(” 3. T -> O | T*O | T/O | T**O\r\n”);

cputs(” 4. O -> () | | \r\n”);

cputs(” 5. -> A{A|Oe}[(]\r\n”);

cputs(” 6. -> Oe{Oe}[.Oe{Oe}][(]\r\n\n”);

cputs(” T – Oapi;\r\n”);

cputs(” O – Iiapaiae;\r\n”);

cputs(” A – Aoeaa;\r\n”);

cputs(” Oe – Oeeopa;\r\n”);

cputs(” AeAC – Ae?iaiia Aac Ciaea;\r\n”);

cputs(” ** – aicaaaeaiea a noaiaiue.”);

I_ReadKey();

}

//(((((((((((((((((((((((((((((((((((((((

// sscue iia?aoi?a.

//(((((((((((((((((((((((((((((((((((((((

void Language(void)

{

window(1,25,80,25);

textattr(112);

MyPuts(” ~F1~ Help ~F2~ Grammar ~F3~ Language ~F9~ Compile ~F10~
Quit ~Alt-X~

Quit ~Esc~ Quit”,DARKGRAY);

window(20,8,60,18);

textcolor(WHITE);

textbackground(GREEN);

clrscr();

DrawBox(2,1,40,11,”sscue iia?aoi?a”);

window(22,9,58,17);

textcolor(BLACK);

cputs(“\r\n”);

cputs(” GOTO CONST | VAR | AA\r\n\n”);

cputs(” CONST – Ae?iaiia aac ciaea,\r\n”);

cputs(” VAR – eaeaioeoeeaoip,\r\n”);

cputs(” AA – apeoiaoe/aneia aupaaeaiea.”);

I_ReadKey();

}

//(((((((((((((((((((((((((((((((((((((((

// Eiiieeyoeey.

//(((((((((((((((((((((((((((((((((((((((

void Compile(void)

{

static int compile=0;

window(1,25,80,25);

textattr(112);

MyPuts(” ~F1~ Help ~F2~ Grammar ~F3~ Language ~F9~ Compile ~F10~
Quit ~Alt-X~

Quit ~Esc~ Quit”,DARKGRAY);

window(20,8,60,18);

textcolor(WHITE);

textbackground(RED);

clrscr();

DrawBox(2,1,40,11,”Eiiieeyoeey”);

window(22,9,58,17);

textcolor(YELLOW);

cputs(“\r\n”);

if(compile>0)

{

cputs(” Oaeno OAEA ioeiiieee?iaai!!!”);

Beep(900,1000);

return;

}

errors=fopen(“PROTOCOL.TXT”,”wt”);

cputs(” Eaeao eiiieeyoeey.\r\n\n Iiaeaeoenoa, iiaeiaeaeeoa…”);

#ifdef TEST

window(1,1,80,25);

textattr(78);

clrscr();

#endif

fprintf(errors,”/******************************************************
*\n”);

fprintf(errors,”–––––––––––––––––––––––––––––––––––––––––––––––––––––––
–\n”);

fprintf(errors,”( I?ioieie ?aaiou neioaene/aneiai ?aniiciaaaoaey
au/eneyaiiai (\n”);

fprintf(errors,”( iia?aoi?a ia?aoiaea ycuea
FORTRAN. (\n”);

fprintf(errors,”–––––––––––––––––––––––––––––––––––––––––––––––––––––––
–\n”);

for(int i=0;text[i] != NULL;i++)

Scaner(text[i]);

fprintf(errors,”–––––––––––––––––––––––––––––––––––––––––––––––––––––––
–\n”);

fprintf(errors,”( EIIAOe.
(\n”);

fprintf(errors,”–––––––––––––––––––––––––––––––––––––––––––––––––––––––
–\n”);

fprintf(errors,”*******************************************************
/\n”);

Beep(900,100);

compile++;

}

//(((((((((((((((((((((((((((((((((((((((

// Ia?aaioea no?iee.

//(((((((((((((((((((((((((((((((((((((((

int Scaner(char* string)

{

char tmpstr[STR_LEN];

strcpy(tmpstr,string);

Delspace(tmpstr);

ScanStr(tmpstr);

return 0;

}

//(((((((((((((((((((((((((((((((((((((((

// Iiene a no?iea iia?aoi?a GOTO.

//(((((((((((((((((((((((((((((((((((((((

int ScanStr(char* string)

{

int j;

int i=0;

int k=0;

static int a=0;

char tmp[80];

char label=NO;

strcpy(STR,string);

fprintf(errors,”–––––––––––––––––––––––––––––––––––––––––––––––––––––––
–\n”);

fprintf(errors,”%s\n”,string);

fprintf(errors,”–––––––––––––––––––––––––––––––––––––––––––––––––––––––
–\n”);

do

{

tmp[0]=NULL;

j=0;

while(!isspace(string[k++]) && string[k-1]!=NULL)

{

tmp[j++]=string[k-1];

}

tmp[j]=NULL;

if((strcmp(tmp,”GOTO”) != 0) && !isdigit(tmp[0]))

{

#ifdef TEST

cprintf(“Ia ii?aaeaeai eaeaioeoeeaoi? %s.\r\n”,tmp);

#endif

ERR1=a;

ERR2=i;

i++;

Error(5,tmp);

}

else if(!isdigit(tmp[0]))

{

label=YES;

ERR1=a;

ERR2=i;

pos=k;

while(AB()!=OK);

break;

}

}

while(string[k] != NULL);

if(label==NO)

{

#ifdef TEST

cprintf(“Ia iaeaeai iia?aoi? GOTO.\r\nNo?iea ?acai?o ia
iiaeeaaeeo.\r\n”);

#endif

Error(6);

}

a++;

return(OK);

}

//(((((((((((((((((((((((((((((((((((((((

// Oaeaeaiea a no?iea i?iaaeia.

//(((((((((((((((((((((((((((((((((((((((

void Delspace(char* string)

{

char str[STR_LEN];

int j=0;

int i=0;

while(isspace(string[i]) && string[i] != NULL)

i++;

for(;string[i] != NULL;i++)

{

if(islower(string[i]))

string[i]=toupper(string[i]);

str[j++]=string[i];

}

str[j]=NULL;

sprintf(string,”%s”,str);

string[j-1]=NULL;

#ifdef TEST

textattr(30);

clreol();

cputs(string);

textattr(78);

cputs(“\r\n”);

#endif

}

//(((((((((((((((((((((((((((((((((((((((

// ?aaeecaoeey iaoa?ieiaea .

//(((((((((((((((((((((((((((((((((((((((

int AB(void)

{

#ifdef TEST

cprintf(“AB – I?iaa?ea ia A?eoiaoe/aneia Au?aaeaiea.\r\n”);

#endif

fprintf(errors,”AB – I?iaa?ea ia A?eoiaoe/aneia Au?aaeaiea.\n”);

Scan();

T();

if(nx==’+’)

{

AB();

}

else if(nx==’-‘)

{

AB();

}

if(nx==NULL)

return(OK);

else if(nx!=’*’ && nx!=’/’ && nx!=’)’)

Error(1);

return(YES);

}

//(((((((((((((((((((((((((((((((((((((((

// ?aaeecaoeey iaoa?ieiaea .

//(((((((((((((((((((((((((((((((((((((((

int T(void)

{

#ifdef TEST

cprintf(“T – I?iaa?ea ia Oa?i.\r\n”);

#endif

fprintf(errors,”T – I?iaa?ea ia Oa?i.\n”);

O();

if(nx==’/’)

{

Scan();

T();

}

else if(nx==’*’)

{

Scan();

if(nx==’*’)

{

Scan();

T();

}

else T();

}

if(nx==NULL)

return(OK);

else if(nx!=’+’ && nx!=’-‘ && nx!=’)’)

Error(2);

return(OK);

}

//(((((((((((((((((((((((((((((((((((((((

// ?aaeecaoeey iaoa?ieiaea .

//(((((((((((((((((((((((((((((((((((((((

int O(void)

{

#ifdef TEST

cprintf(“O – I?iaa?ea ia Iia?aiae.\r\n”);

#endif

fprintf(errors,”O – I?iaa?ea ia Iia?aiae.\n”);

if(nx=='(‘)

{

AB();

if(nx!=’)’)

Error(3);

else

{

Scan();

return(OK);

}

}

else

if(IDENT() == NO)

{

if(FLOAT() == NO)

Error(4);

}

return(OK);

}

//(((((((((((((((((((((((((((((((((((((((

// ?aaeecaoeey iaoa?ieiaea .

//(((((((((((((((((((((((((((((((((((((((

int IDENT(void)

{

#ifdef TEST

cprintf(“IDENT – I?iaa?ea ia Eaeaioeoeeaoi? n neiaiea %c.\r\n”,nx);

getch();

#endif

fprintf(errors,”IDENT – I?iaa?ea ia Eaeaioeoeeaoi? n neiaiea
%c.\n”,nx);

if(isalpha(nx))

{

while(isalpha(nx) || isdigit(nx))

Scan();

return(YES);

}

return(NO);

}

//(((((((((((((((((((((((((((((((((((((((

// ?aaeecaoeey iaoa?ieiaea .

//(((((((((((((((((((((((((((((((((((((((

int FLOAT(void)

{

#ifdef TEST

cprintf(“FLOAT – I?iaa?ea ia Ae?iaiia Aac Ciaea n oeeo?u %c.\r\n”,nx);

getch();

#endif

fprintf(errors,”FLOAT – I?iaa?ea ia Ae?iaiia Aac Ciaea n oeeo?u
%c.\n”,nx);

if(isdigit(nx))

{

while(isdigit(nx))

Scan();

if(nx==’.’)

{

Scan();

while(isdigit(nx))

Scan();

}

return(YES);

}

return(NO);

}

//(((((((((((((((((((((((((((((((((((((((

// Neaie?iaaiea neaaeothuaai neiaiea ec no?iee.

//(((((((((((((((((((((((((((((((((((((((

void Scan(void)

{

#ifdef TEST

cprintf(“SCAN – Neaie?iaaiea. Oaeouee neiaie ‘%c’ n eiaeii
%d.\r\n”,STR[pos],STR[pos]);

getch();

#endif

fprintf(errors,”SCAN – Neaie?iaaiea. Oaeouee neiaie ‘%c’ n eiaeii

%d.\n”,STR[pos],STR[pos]);

nx=STR[pos];

pos++;

}

//(((((((((((((((((((((((((((((((((((((((

// Ia?aaioea ioeaie.

//(((((((((((((((((((((((((((((((((((((((

void Error(int num,char* s)

{

char *E[40]=

{

“Iaeeaeaaony ‘+’ eee ‘-‘”,

“Iaeeaeaaony ‘*’, ‘/’ eee ‘**'”,

“Iaeeaeaaony ‘)'”,

“Iaeeaeaaony eaeaioeoeeaoi? eee Ae?iaiia aac ciaea”,

“Ia ii?aaeaeai eaeaioeoeeaoi? “,

“Ia iaeaeai iia?aoi? GOTO\r\nNo?iea ?acai?o ia iiaeeaaeeo”,

NULL

};

sprintf(mes[ERR1][ERR2],”%s%s”,E[num-1],s);

fprintf(errors,”–––––––––––––––––––––––––––––––––––––––––––––––––––––––
–\n”);

fprintf(errors,”Error – Ioeaea no?iea %d, ioeaea # %d.\n”,ERR1,ERR2);

#ifdef TEST

cprintf(“Error – Ioeaea: no?iea # %d, ioeaea # %d.\r\n”,ERR1,ERR2);

cprintf(“%s\r\n”,mes[ERR1][ERR2]);

Beep(1000,200);

getch();

#endif

fprintf(errors,”%s\n”,mes[ERR1][ERR2]);

fprintf(errors,”–––––––––––––––––––––––––––––––––––––––––––––––––––––––
–\n”);

ERR2++;

mes[ERR1][ERR2][0]=NULL;

}

//(((((((((((((((((((((((((((((((((((((((

// Iiaeeeth/aaiue oaee.

//(((((((((((((((((((((((((((((((((((((((

#include”intface.h” // Oaee n ooieoeeyie eioa?oaena.

//(((((((((((((((((((((((((((((((((((((((

// ( 1997 Ai?cia Aiae?ae Heeieaaae/. E-mail:
[email protected]

//(((((((((((((((((((((((((((((((((((((((

Eeoa?aoo?a.

Eo?n eaeoeee ii nenoaiiiio i?ia?aiie?iaaieth.

Aa?aa?o Oeeaeo «C aeey i?ioanneiiaeueiuo i?ia?aiienoia».

Neioaene/aneee ?aniiciaaaoaeue au/eneyaiiai iia?aoi?a ia?aoiaea ycuea
FORTRAN.

A?oiia A-513. Ai?cia Aiae?ae Ieeieaaae/. PAGE 2

Нашли опечатку? Выделите и нажмите CTRL+Enter

Похожие документы
Обсуждение

Оставить комментарий

avatar
  Подписаться  
Уведомление о
Заказать реферат
UkrReferat.com. Всі права захищені. 2000-2019