.


:




:

































 

 

 

 


-




 

, : ; , ; "" , .

1) :

à struct lex {int class; int value;};

à , - getlex struct lex getlex (void);

à struct lex curr_lex , .

 

2) :

int id (void); - 1, curr_lex.class = 4, .. curr_lex , 0 - ;

int num (void); - 1, curr_lex.class = 3, .. curr_lex -, 0 - ;

int eq (char * s); - 1, curr_lex s, 0 - ;

void error(void) - ; .

 

, :

 

P program D'; B^

void P (void){

if (eq ("program")) curr_lex = getlex();

else ERROR();

D1();

if (eq (";")) curr_lex = getlex(); else ERROR();

B();

if (!eq ("^")) ERROR();

}

 

D' var D {, D}

void D1 (void){

if (eq ("var")) curr_lex = getlex();

else ERROR();

D();

while (eq (","))

{curr_lex = getlex (); D();}

}

 

D I {,I}: [ int | bool ]

void D (void){

if (!id()) ERROR();

else {curr_lex = getlex();

while (eq (","))

{curr_lex = getlex();

if (!id()) ERROR();

else curr_lex = getlex ();

}

if (!eq (":")) ERROR();

else {curr_lex = getlex();

if (eq ("int") || eq ("bool"))

curr_lex = getlex();

else ERROR();}

}

}

 

E1 T {[ + | - | or ] T}

void E1 (void){

T();

while (eq ("+") || eq ("-") || eq ("or"))

{curr_lex = getlex(); T();}

}

 

.

 

"" :

... curr_lex = getlex(); P();...

 

 

- , , , .

:

a) , ;

b) ;

c) , ; ; ; ..

. , (, ), .

: , , . , , .

, - "" ( ). , , , -. , .

: , - , -.

,

A a < D1 > B < D1;D2 > | bC < D3 >,

A,B,C Î VN; a,b Î VT; < Di > Di, i = 1, 2, 3. , , :

void A() {

if (c=='a') {c = fgetc(fp); D1(); B(); D1(); D2();}

else if (c == 'b') {c = fgetc(fp); C(); D3();}

else ERROR();

}

 

: , L = {a Î (0,1)+^ | a 0 1}.

, , . 0 1, 0 1:

S < k0 = 0; k1 = 0; > A^

A 0 < k0 = k0+1 > A | 1 < k1 = k1+1 > A |

0 < k0 = k0+1; check() > | 1 < k1 = k1+1; check() >,

 

void check()

{ if (k0!= k1) { printf("ERROR!!!"); exit(1);}

else { printf("SUCCESS!!!\n");exit(0);}

}

, .





:


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


:

:

, .
==> ...

1619 - | 1539 -


© 2015-2024 lektsii.org - -

: 0.015 .