{ Li | Li A *, i [1,3]} A, Li () i [1, 3].
L 1 ; L 2 - 8; L 3 , { s, t }. s t .
A 256 8 () ASCII-. - 0x20 - 0x09.
1) Li P i A, i [1,3] :
P1 = {[_a-zA-Z], [0-9], [^_a-zA-Z]};
P2 = {[0], [1-7], [lL], [uU], [^01-7 lL uU]},
P3 = {[\x20\x09], [^\x20\x09]}.
, , :
B 1 = { a, 9,? }, B 2 = {0, 7, l, u,? }, B 3 = { s,? },
i Li Bi, i [1,3]:
e 1 = ( | 9)*, e 2 = 0(0 | 7)* (λ|u|l|ul|lu), e 3 = ss *.
2) λ - Di i, i [1,3]:
e 1 = ( | 9)*;
:
( | 9):
( | 9)*:
e 1 = ( | 9)*:
λ-a D 1
|
|
|
e 2 = 0(0 | 7)* (λ|u|l|ul|lu):
λ-a D 2
e 3 = s s *:
λ - a D 3
3) Mi,
L (Di), i [1,3]. * , Æ - .
M 1
q\a | a | ? | ||
[0]= {0} | Æ | Æ | ||
[1]={1, 2, 3} * | Æ | |||
[Æ]=Æ | Æ | Æ | Æ | |
[{2,3}]={2,3} * | Æ |
M 2
q\a | l | u | ? | |||
[0]= {0} | Æ | Æ | Æ | Æ | ||
[1]={1,2,3,6} * | Æ | |||||
[Æ] =Æ | Æ | Æ | Æ | Æ | Æ | |
[2]={2,3, 6} * | Æ | |||||
[{4,6}]={4,6} * | Æ | Æ | Æ | Æ | ||
[{5,6}]={5,6} * | Æ | Æ | Æ | Æ | ||
[6]= {6} * | Æ | Æ | Æ | Æ | Æ |
M 3
q\a | s | ? | |
[0]= 0 | |||
[1]={1, 2, 3} * | Æ | ||
[Æ] =Æ | Æ | Æ | |
[{2,3}]={2,3} * | Æ |
Li , Mi i [1,3], λ-, ;
4) B = {0, 7, 9, a, l, u, s,?}. A -
P = {[0], [1-7], [89], [_a-km-tv-zA-KM-TV-Z], [lL], [uU], [\x20\x09],
[^0-9_a-zA-Z\x20\x09]}.
|
|
:
B 1 = {a, 9,?}
a = | l | u,
9 = 0 | 7 | 9,
? = s |?;
B 2 = {0, 7, l, u,?}
0 = 0,
7 = 7,
l = l,
u = u,
? = 9 | a | s |?;
B 3 = { s,?}
s = s,
t = t,
? = 0 | 7 | 9 | | l | u |?.
, B:
e 1 = ( | l | u)( | l | u | 0 | 7 | 9)*,
e 2 = 0(0 | 7)* (λ|u|l|ul|lu),
e 3 = ss *.
, A, B , P. , C# ():
e 1 - @([_a-km-tv-zA-KM-TV-Z] | [lL] | [uU])+
@([_a-km-tv-zA-KM-TV-Z] | [lL] | [uU] | [0] | [1-7] | [89])*;
e 2 - @[0]([0] | [1-7])* ([uU] | [lL] | [uU] [lL] | [lL] [uU])?;
e 3 - @ [\x20\x09] [\x20\x09]*.
Di Bi B:
a - b -. , D 1 (i, a, j) (i, | l | u, j), (i, 9, j) (i, 0 | 7 | 9, j) (i,?, j) (i, s | t |?, j).
B λ - D i, i [1,3]:
e 1 = ( | l | u)(| l | u | 0 | 7 | 9)*;
e 2 = 0(0 | 7)* (λ|u|l|ul|lu):
λ-a D 2
e 3 = ss *:
λ-a D 3
Mi, B, i [1,3].
M 1
q\a | a | l | u | s | ? | ||||
[0]= {0} | Æ | Æ | Æ | Æ | Æ | ||||
[1]={1, 2, 3 } * | Æ | Æ | |||||||
[Æ] =Æ | Æ | Æ | Æ | Æ | Æ | Æ | Æ | Æ | |
[{2,3}]={2,3} * | Æ | Æ |
M 2
q\a | a | l | u | s | ? | ||||
[0]= {0} | Æ | Æ | Æ | Æ | Æ | Æ | Æ | ||
[1]={1,2,3,6} * | Æ | Æ | Æ | Æ | |||||
[Æ] =Æ | Æ | Æ | Æ | Æ | Æ | Æ | Æ | Æ | |
[2]={2,3,6} * | Æ | Æ | Æ | Æ | |||||
[{4,6}]= {4,6} * | Æ | Æ | Æ | Æ | Æ | Æ | Æ | ||
[{5,6}]= {5,6} * | Æ | Æ | Æ | Æ | Æ | Æ | Æ | ||
[6]= {6} * | Æ | Æ | Æ | Æ | Æ | Æ | Æ | Æ |
M 3
q\a | a | l | u | s | ? | ||||
[0]= 0 | Æ | Æ | Æ | Æ | Æ | Æ | Æ | ||
[1]={1, 2, 3} * | Æ | Æ | Æ | Æ | Æ | Æ | Æ | ||
[Æ] =Æ | Æ | Æ | Æ | Æ | Æ | Æ | Æ | Æ | |
[{2,3}]={2,3} * | Æ | Æ | Æ | Æ | Æ | Æ | Æ |
|
|
Li B , Mi i [1,3], λ-, .
- a M 1,2= M 1x M 2, : L 1 L 2.
M 1,2
q\a | a | l | u | s | ? | ||||
(0,0) | Æ | Æ | Æ | Æ | |||||
(2,1) 2 | Æ | Æ | Æ | Æ | |||||
(2,2)= Æ | Æ | Æ | Æ | Æ | Æ | Æ | Æ | Æ | |
(1,2) 1 | Æ | Æ | |||||||
(2,3) 2 | Æ | Æ | Æ | Æ | |||||
(2,4) 2 | Æ | Æ | Æ | Æ | Æ | Æ | Æ | ||
(2,5) 2 | Æ | Æ | Æ | Æ | Æ | Æ | Æ | ||
(3,2) 1 | Æ | Æ | |||||||
(2,6) 2 | Æ | Æ | Æ | Æ | Æ | Æ | Æ | Æ |
5) - a M = M 1x M 2x M 3, : L 1 L 2 L 3.
M
q\a | a | l | u | s | ? | ||||
(0,0,0) | Æ | Æ | Æ | ||||||
(2,1,2) 2 | Æ | Æ | Æ | Æ | |||||
(2,2,2)= Æ | Æ | Æ | Æ | Æ | Æ | Æ | Æ | Æ | |
(1,2,2) 1 | Æ | Æ | |||||||
(2,2,1) 3 | |||||||||
(2,3,2) 2 | |||||||||
(2,4,2) 2 | |||||||||
(2,5,2) 2 | |||||||||
(3,2,2) 1 | |||||||||
(2,2,3) 3 | |||||||||
(2,6,2) 2 |
M =(Q, B, g, q 0, F), F = F 1 F 2 F 3, F 1 = {3, 8},
F 2 = {1, 5, 6, 7, 10}, F 3 = {4, 8}.
(Q, B, g, q 0, Fi) Li, i [1,3].
C { F 1, F 2, F 3} , { L 1, L 2, L 3} ;
M ¢, M 1,2 M 3. M M ¢ , .
M ¢
F | q\a | a | l | u | s | ? | |||
Æ | Æ | 9 | Æ | ||||||
Æ | Æ | Æ | Æ | ||||||
Æ | Æ | Æ | Æ | Æ | Æ | Æ | Æ | Æ | |
Æ | Æ | ||||||||
Æ | Æ | Æ | Æ | ||||||
Æ | Æ | Æ | Æ | Æ | Æ | Æ | |||
Æ | Æ | Æ | Æ | Æ | Æ | Æ | |||
Æ | Æ | ||||||||
Æ | Æ | Æ | Æ | Æ | Æ | Æ | Æ | ||
Æ | Æ | Æ | Æ | Æ | Æ | Æ | |||
Æ | Æ | Æ | Æ | Æ | Æ | Æ |
|
|
7) .
q 0.
, , - Error ={ q | g *(q, x) Ï F }.
M = M 1x M 2x M 3 Error = {2}, q 2 q Î F.
- Active = Q \ Error.
-
ActiveTransition = {(q, a)| q Î Active g (q, a) Î Active, a Î B }.
, Li, - EndL i = {(q, a)| q Î Fi g (q, a) Î Error, a Î B }.
a , (q, a) Î EndL i x Î Li. x q Î Fi, q = g *(q 0, x).
ErrorL = {(q, a)| q Î Active \ F g (q, a) Î Error, a Î B } .
(q, a) Î ErrorL, x , q = g *(q 0, x) q, ,
xa , y Î B *, xa Î L.
, ActiveTransition, EndL 1 , EndL 2, EndL 3 , ErrorL, - .
() P ( )
f: Q ´ B¢ → P, B ¢= B È { #}. f (q, a)= p Î P, p , q Î Q a Î B ¢. # Ï B .
M =(Q, B ¢, P, f, g) .
P = { pActiveTransition, p EndL1, , p EndL n, p ErrorL}. :
f (q, a)= p ActiveTransition, (q, a)ÎActiveTransition;
(q, a)Î EndL i, (q, #)Î EndL i,
f (q, a)= p EndL i, (q, a)Î EndL i, i Î [1, n ];
(q, a)Î ErrorL, (q, #)Î ErrorL,
f (q, a)= p ErrorL, (q, a)Î ErrorL.
()
M =(Q, B ¢, P, f, g) () B ¢.
.
P.
p ActiveTransition:
s = s + a; // , //
// q 1 = <q>
q = g[q,b]; // b = [a] ¹ #
// q 2 = <q> (q 1, b, q 2) in ActiveTransition `
return;
p EndL i, i Î [1, n ]:
//(q, b) in EndL i, i Î [1, n ]
//<s> = x , b = [a] <a> = a
tokenStream.WriteLine(<L, i, >, s);
if (b == [#])
|
|
{
//
return;
}
else
{
inputStream.UnGetC(a); // <a> = a
q = 0; //
s=; //
return;
}
p ErrorL:
s = s + a;
tokenStream.WriteLine(<ErrorL>, s); //s= xa
if (b == [#])
{
//
return;
}
else
{
//skip ,
q = 0;
s=;
return;
}