.


:




:

































 

 

 

 





switch . ( q0=0).

int automat (FILE*fp)

{ int , q=0; //

while((c=fgetch(fp))!=EOF)

{ if (index_litera(c) = = -1) break;

switch(q)

{case 0:

if (c>='1' && c<='9") {q=1; break;}

if (c= =' ' || c= ='\n' || c= ='\t' || c= ='\r') break;

if (c= ='0') { q=6; break;}

//

my_error(); return 0;

case 1:

if (c>='0' && c<='9') break;

//

return 1;

case 6:

if (c= ='' || c= ='x') {q=12; break;}

if (c>='0' && c<='7') {q=7; break;}

//

return 1;

case 12:

if ((c>='0' && c<='9') ||

(c>='A' && c<='F') ||

(c>='a' && c<='f')) {q=13; break;}

//

my_error (); return 0;

// --------------------------------------------------------------------

//

// --------------------------------------------------------------------

}// switch

//

if (is_final (row)) printf (" - %s", text);

else printf ('' -%s", text);

}//

}// automat

automat, , . , . ASCI: . automat , .

:

- , \n, \v, \r, \t, \b , ;

- 1, 2, 3,..7 ( 0);

- 0,...9,A,..F,a,..f ;

- 0

- , ASCI: \, .

, .

, ' 256 , .

# include <stdio.h>

#define DECIMAL 0x01

#define OCTAL 0x02

#define EMPTY 0x80

#define LITERA 0x04

char decimal[]=0123456789;

char hesh_digit[] = 0123456789ABCDEFabcdef;

char octal[] = 01234567;

char empty[] = \n\r\t\v\r\b;

char litera[]=

ABCDEFGHIJKLMNOPQRSTUVUXYZ_abcdefghijklmnopqrstuvuxyz

char vector_upr [256];

//

void set_class (char * str, int code)

{ int i, len = strlen(str);

for (i=0; i<len; i + +) vector_upr [(int)*(str+i)] |= code;

}

int automat (FILE * fp)

{ int c, q =0; //

while ((c = fgetch(fp))! = EOF)

{ class_litera = vector_upr [(int) (c)];

if (!class_litera) break; // sigma

switch (q)

{ case 0: if (class_litera & DECIMAL) { q=1; break;}

if (c == 0) {q=6; break; }

if (class_litera & EMPTY) break;

return ERROR;

//

. ..

}

} }

main () {

int i;

FILE*fp; char file_name[80];

REPEAT:

printf(" ' :");

if(scant("%s", file_name) == 0) return 0; //

if(fp = fopen (file_name,"rt") == NULL)

{ printf (" %s .\ n"); goto REPEAT;}

for (i = 0; i < 256; i++) *(vector_upr + i) = 0;

set_class(decimal, DECIMAL);

set_class(octal, OCTAL); set class(litera, LITERA);

set class(empty, EMPTY);

while (! eof (fp))

if (automat(fp) == ERROR) printf (" - %s", text);

else printf ('' -%s", text);

}// main





:


: 2015-11-05; !; : 363 |


:

:

.
==> ...

1733 - | 1701 -


© 2015-2024 lektsii.org - -

: 0.012 .