.


:




:

































 

 

 

 


:




 

#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. () . "", "" "" (,..--..-...- ^). , . .

 





:


: 2017-02-25; !; : 526 |


:

:

,
==> ...

1689 - | 1566 -


© 2015-2024 lektsii.org - -

: 0.018 .