#include <stdio.h>
#include <ctype.h>
#define BUFSIZE 80
extern ptabl TW, TID, TD, TNUM;
char buf[BUFSIZE]; /* */
int c; /* */
int d; /* */
void clear(void); /* buf */
void add(void); /* buf*/
int look(ptabl); /* buf; : 0 */
int putl(ptabl); /* buf, ; : */
int putnum(); /* TNUM d, ; : TNUM */
int j; /* , , look */
void makelex(int,int); /* */
void id_or_word(void) { if (j=look(TW)) makelex(1,j);
else { j=putl(TID); makelex(4,j);}
}
void is_dlm(void) { if (j=look(TD)) {makelex(2,j); gc();}
else error();}
: Nx ( ) x .
void scan (void)
{enum state {H, ID, NUM, COM, ASS, DLM, ER, FIN};
state TC; /* */
FILE* fp;
TC = H;
fp = fopen("prog","r"); /* "prog" */
c = fgetc(fp);
do {switch (TC) {
case H:
if (c == ' ') c = fgetc(fp);
else if (isalpha(c))
{clear(); add(); c = fgetc(fp); TC = ID;}
else if (isdigit (c))
{d = c - '0'; c = fgetc(fp); TC = NUM;}
else if (c=='{') {c=fgetc(fp); TC = COM;}
else if (c == ':')
{c = fgetc(fp); TC = ASS;}
else if (c == '^')
{makelex(2, N^); TC = FIN;}
else TC = DLM;
break;
case ID:
if (isalpha(c) || isdigit(c)) {add(); c=fgetc(fp);}
else {if (j = look (TW)) makelex (1,j);
else {j = putl (TID); makelex (4,j);};
TC = H;};
break;
case NUM:
if (isdigit(c)) {d=d*10+(c - '0'); c=fgetc (fp);}
else {makelex (3, putnum()); TC = H;}
break;
/*........... */
} /* switch */
} /* */
while (TC!= FIN && TC!= ER);
if (TC == ER) printf("ERROR!!!\n");
else printf("O.K.!!!\n");
}
.
33. :
S S0 | S1 | P0 | P1
P N.
N 0 | 1 | N0 | N1.
: 11.010, 0.1, 01., 100. ?
34. .
a) 1011^, 10+011^ 0-101+1^.
b) , .
c) ?
35. c gc(), . :
a) , 1+101//p11+++1000/5^?
|
|
b) .
36. ,
L = {(abb)k^| k >= 1},
, .
37. , , ^, <>, <= >= .
38. :
S A^
A Ab | Bb | b
B Aa
, ; ; .
39. , ( ) .
*40. G1 G2.
G1: S 0C | 1B G2: S 0D | 1B
B 0B | 1C | e B 0C | 1C
C 0C | 1C C 0D | 1D | e
D 0D | 1D
L1 = L(G1); L2 = L(G2).
:
a) L1ÈL2
b) L1ÇL2
c) L1* \ {e}
d) L2* \ {e}
e) L1*L2
, , .
41. , , .
a) S 0S | 0B b) S aA | aB | bA
B 1B | 1C A bS
C 1C | ^ B aS | bB | ^
c) S aB d) S 0B
B aC | aD | dB B 1C | 1S
C aB C ^
D ^
42.
a) ;
b) ;
c) -, ;
d) .
S 0S | S0 | D
D DD | 1A | e
A 0B | e
B 0A | 0
43. , ( ). ? .
a) S C^ b) S C^
B B1 | 0 | D0 C B1
C B1 | C1 B 0 | D0
D D0 | 0 D B1
c) S A0 *d) S B0 | 0
A A0 | S1 | 0 B B0 | C1 | 0 | 1
C B0
*e) S A0 | A1 | B1 | 0 | 1 *f) S S0 | A1 | 0 | 1
A A1 | B1 | 1 A A1 | B0 | 0 | 1
B A0 B A0
*g) S Sb | Aa | a | b
A Aa | Sb | a
44. G L=L1ÈL2, L1 ÇL2 =Æ. G1, L1*L2 (. 20). .
S A^
A A0 | A1 | B1
B B0 | C0 | 0
C C1 | 1
*45. G1 G2, L1 L2.
a) L1 È L2
b) L1 Ç L2
c) L1 * L2 (. 20)
G1: S S1 | A0 G2: S A1 | B0 | E1
A A1 | 0 A S1
B C1 | D1
C 0
D B1
E E0 | 1
.
46. G1 G2 L1*L1 (. 20), L1 = L(G1); G2 - .
G1: S S1 | A1
A A0 | 0
47. , :
a) L = {w^ | w Î {0,1}*, 1 0};
b) L = {1w1^ | w Î {0,1}+, 0 };
, .
|
|
48. () . "", "" "" (,..--..-...- ^). , . .