Q (Q-) - 2


.

(A::=e) = (A)

 

, , . . , .

 

S# >> aA# >> >> aaA# >> aa(A::=e)# >> aa#

 

S- Q- , Q- . , . :

.

S ::= aA a

S ::= bSb b

A ::= aA a

A ::= e (A)={b,#}

 

, . Q- :


.

(M)\(I) a b #

a pop(M),next(I) Error Error

b Error pop(M),next(I) Error

A pop(M),push(aA) pop(M) pop(M)

S pop(M),push(aA) pop(M),push(bSb) Error

# Error Error Success

 

S- qgram1.cpp. . , (). ( ) CH[k]:

 

char *GR[]={ S:aA, S:bSb, A:aA, A:, NULL };

char CH[]={ NULL,NULL,NULL,b};

for (k=0; GR[k]!=NULL; k++) //

{ q=GR[k];if(*q==m[j-1]) // ???

{ if (*(q+2)!=\0) // S-

{ if (*(q+2)==s[i]) break; }

else // Q-

{ // 렠

for (f=CH[k]; *f !=\0; f++)

{ if (s[i]==*f) break;

if ((s[i]==\0) && (*f==*)) break;

}

if (*f != \0) break;

}}}