Bài giảng Trình biên dịch - Chương 3: Phân tích từ vựng

3.4. Đặc tả token

Các quy tắc định nghiã biểu thức chính quy

1. ? là biểu thức chính quy, biểu thị cho tập {?}

2. a là ký hiệu thuộc S, biểu thị cho tập {a}

3. r và s là hai biểu thức chính quy, biểu thị cho L (r) và L (s) thì:

 a) (r) | (s) là biểu thức chính quy, biểu thị cho L(r) ? L(s).

b) (r) (s) là biểu thức chính quy, biểu thị cho L(r) L(s).

c) (r)* là biểu thức chính quy, biểu thị cho (L(r))*.

d) r là biểu thức chính quy, biểu thị cho L(r)

pdf 33 trang phuongnguyen 9260
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Trình biên dịch - Chương 3: Phân tích từ vựng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Trình biên dịch - Chương 3: Phân tích từ vựng

Bài giảng Trình biên dịch - Chương 3: Phân tích từ vựng
CHệễNG 3
PHAÂN TÍCH Tệỉ VệẽNG 
3.1. Vai troứ cuaỷ boọ phaõn tớch tửứ vửùng
1. Token, maóu, trũ tửứ vửùng
Baỷng 3.1 Baỷng danh bieồu cuỷa token
Token Trũ tửứ vửùng YÙ nghúa cuỷa maóu
const
if
then
ralation
num
id
literal
const
if
then
, = , > =
3.14, 2.5, 7.6
abc, ou, bc1
‘abcef’
const
if
then
caực toaựn tửỷ quan heọ
haống soỏ baỏt kyứ
chuoói goàm kyự tửù chửừ vaứ soỏ, 
baột ủaàu laứ kyự tửù chửừ
laứ chuoói kyự tửù baỏt kyứ naốm
giửừa 2 daỏu ‘
Hỡnh 3.1. Sửù giao tieỏp giửừa boọ phaõn tớch tửứ vửùng vaứ boọ phaõn tớch
cuự phaựp
3.2. CAÙC TÍNH CHAÁT CUÛA TOKEN
3.3. CHệÙA TAẽM CHệễNG TRèNH NGUOÀN
1. Caởp boọ ủeọm
Caỏu taùo
Boọ phaõn tớch
tửứ vửùng
Baỷng danh bieồu
Boọ phaõn
tớch CP
Chửụng trỡnh
nguoàn token
yeõu caàu token
A : = B * . - 2 eof
p1 p2
Hỡnh 3.2. Caởp boọ ủeọm
Quy trỡnh hoaùt ủoọng
Giaỷi thuaọt:
if p2 ụỷ ranh giụựi moọt nửỷa boọ ủeọm then
begin laỏp ủaày N kyự hieọu nhaọp mụựi vaứo nửỷa beõn phaỷi
p2 := p2 + 1;
end 
else if p2 ụỷ taọn cuứng beõn phaỷi boọ ủeọm then 
begin laỏp ủaày N kyứ hieọu nhaọp vaứo nửỷa beõn traựi boọ ủeọm
chuyeồn
p2 veà kyự tửù taọn cuứng beõn traựi cuỷa boọ ủeọm end
else p2 := p2 + 1;
2. Phửụng phaựp caàm canh
A : = B * X EOF - 2 EOF EOF
N kyự tửù N kyự tửù
p1 p2
Hỡnh 3.3. Caởp boọ ủeọm theo phửụng phaựp caàm canh
Giaỷi thuaọt:
p2 := p2 + 1;
if p2 ^ eof then 
if p2 ụỷ ranh giụựi moọt nửỷa boọ ủeọm then 
begin
chaỏt ủaày N kyứ hieọu nhaọp vaứo nửỷa beõn phaỷi boọ ủeọm; 
p2 := p2 + 1 
end
else if p2 ụỷ taọn cuứng beõn phaỷi boọ ủeọm then 
begin
laỏp ủaày N kyự hieọu vaứo nửỷ beõn traựi boọ ủeọm; chuyeồn p2 
veà ủaàu boọ ủeọm
end
else /* dửứng sửù phaõn tớch tửứ vửùng */
3.4. ẹaởc taỷ token
Caực quy taộc ủũnh nghiaừ bieồu thửực chớnh quy
1. ∈ laứ bieồu thửực chớnh quy, bieồu thũ cho taọp {∈}
2. a laứ kyự hieọu thuoọc Σ, bieồu thũ cho taọp {a}
3. r vaứ s laứ hai bieồu thửực chớnh quy, bieồu thũ cho L (r) vaứ L (s) thỡ:
ứ a) (r) | (s) laứ bieồu thửực chớnh quy, bieồu thũ cho L(r) ∪ L(s).
b) (r) (s) laứ bieồu thửực chớnh quy, bieồu thũ cho L(r) L(s).
c) (r)* laứ bieồu thửực chớnh quy, bieồu thũ cho (L(r))*.
d) r laứ bieồu thửực chớnh quy, bieồu thũ cho L(r).
Thớ duù 3.1. Cho Σ = {a, b}
1. a|b 
2. (a| b) | (b| a) 
3. a*
Hai bieồu thửực chớnh quy tửụng ủửụng r vaứ s, kyự hieọu r = s.
2. ẹũnh nghúa chớnh quy
Neỏu Σ laứ taọp kyự hieọu caờn baỷn, thỡ ủũnh nghiaừ chớnh quy laứ chuoói ủũnh
nghiaừ coự daùng: d1→ r1
dn→ rn
Thớ duù 3.2. letter → A | B | |Z | a| b || z
digit → 0 |1| | 9
id→ letter ( letter | digit)*
Thớ duù 3.3. digit→ 0 | 1 | | 9 
digits → digit digit*
optional_fraction → .digits | ∈
optional_exponent → (E (+| - |∈) digits) | ∈
3.5. Nhaọn daùng token
Thớ duù 3.4. Cho vaờn phaùm G:
stmt→ if exp then stmt 
| if exp then stmt else stmt 
| ∈
exp → term relop term | term
term → id | num
ẹũnh nghúa chớnh quy
if → if then → then else→ else 
relop → | >= | | = 
id → letter (letter | digit)* 
num → digit+ (.digit+ | ∈) ( E ( + | - | ∈) digit+ | ∈ )
delim→ blank | tab | newline
ws → delim+
Tửứ ủũnh nghúa chớnh quy ta xaõy dửùng baỷng maóu cho token nhử ụỷ baỷng
3.3 trang 74.
3.6. Sụ ủoà dũch
1. Mieõu taỷ
0 7
8
Baột ủaàu >
=
other
2
3
Start < = return (relop, LE)
6 7
8
> return (relop, NE)
4 return (relop, LT)
5
=
return (relop, EQ)
>
other
6 Hỡnh 3.4. Sụ ủoà dũch cho >= 
vaứ =
0 1
=
other
(relop, EQ)
return (relop, EQ)
*
*
*
Hỡnh 3.5. Sụ ủoà dũch nhaọn daùng token relop
Lửu yự: 
- Phaàn khai baựo bao goàm khai baựo haống, bieỏn bieồu thũ vaứ caực ủũnh
nghúa chớnh quy.
- Phaàn quy taộc bieõn dũch laứ caực phaựt bieồu coự daùng:
p1→ {haứnh vi ngửừ nghúa 1}
p2→ {haứnh vi ngửừ nghúa 2}
pn → {haứnh vi ngửừ nghúa n}
3.8. Automat hửừu haùn
1. Automat hửừu haùn khoõng taỏt ủũnh (NFA)
Thớ duù: Cho NFA: 
Taọp traùng thaựi S = {0, 1,2, 3}; Σ = {a, b}; Traùng thaựi baột ủaàu so = 0; 
Taọp traùng thaựi keỏt thuực F = {3}. 
Baỷng 3.4. Baỷng truyeàn cho NFA ụỷ hỡnh 3.10
Kyự hieọu nhaọp
Traùng thaựi
a b
0 {0, 1} {0}
1 - {2}
2 - {3}
NFA chaỏp nhaọn moọt chuoói nhaọp x neỏu vaứ chổ neỏu toàn taùi moọt ủửụứng
naứo ủoự trong sụ ủoà tửứ traùng thaựi baột ủaàu ủeỏn traùng thaựi keỏt thuực sao
cho taỏt caỷ teõn cuỷa caực caùnh con ủửụứng cho chuoói x. NFA chaỏp nhaọn
chuoói aabb.
2. Automat hửừu haùn taỏt ủũnh (DFA)
DFA laứ trửụứng hụùp ủaởc bieọt cuỷa NFA, noự khoõng coự:
i) Sửù truyeàn roóng.
ii) Vụựi moói traùng thaựi s vaứ kyự hieọu nhaọp a chổ toàn taùi nhieàu nhaỏt moọt
caùnh coự teõn a xuaỏt phaựt tử ứs.
Giaỷi thuaọt 3.1.Moõ phoỷng hoaùt ủoọng cuỷa DFA treõn chuoói nhaọp x.
Thớ duù 3.5
start
30 a 0
a b b1 1
Hỡnh 3.12. DFA nhaọn daùng ngoõn ngửừ (a | b)*abb
3. Chuyeồn NFA sang DFA
Giaỷi thuaọt 3.2. Xaõy dửùng taọp con (Taùo DFA tửứ NFA).
Nhaọp: Cho NFA goùi laứ N.
Xuaỏt: DFA goùi laứ D, nhaọn daùng cuứng ngoõn ngửừ nhử NFA.
Phửụng phaựp: Xaõy dửùng baỷng truyeàn cho D. Moói traùng thaựi cuỷa D laứ
taọp traùng thaựi cuỷa N. D moõ phoỷng ủoàng thụứi moùi chuyeồn ủoọng cuỷa N 
treõn chuoói nhaọp cho trửụực baống caực taực vuù:
∈-closure (s); ∈-closure (T); move (T, a)
Moõ phoỷng 3.2. Xaõy dửùng taọp con
Giaỷi thuaọt: Tớnh ∈-closure
ẹaồy taỏt caỷ caực traùng thaựi trong T leõn stack; Khụỷi taùo ∈-closure (T) 
cho T.
Moõ phoỷng 3.3. Tớnh ∈-closure
Thớ duù 3.6. (H.3.13 ) laứ NFA nhaọn daùng ngoõn ngửừ (a | b )* abb. Chuựng
ta duứng giaỷi thuaọt 3.2 ủeồ xaõy dửùng DFA tửụng ủửụng.
0start
∈
1 10
4∈
a
b
b
a
2
8
3
5
6 7 9
∈
∈
∈
Hỡnh 3.13. NFA nhaọn daùng (a | b)* abb
b
3.9. Tửứ bieồu thửực chớnh quy ủeỏn NFA
Xaõy dửùng NFA tửứ bieồu thửực chớnh quy
Giaỷi thuaọt 3.3. Xaõy dửùng NFA tửứ bieồu thửực chớnh quy (Caỏu truực
Thompson’)
Nhaọp: Bieồu thửực chớnh quy r treõn Σ.
Xuaỏt: NFA nhaọn daùng ngoõn ngửừ L (r).
Phửụng phaựp:
Quy taộc:
1. Vụựi ∈ , xaõy dửùng NFA
2. Vụựi a thuoọc Σ, xaõy dửùng NFA
start
i f
∈
start
i f
a
3. Giaỷ sửỷ N( s ) vaứN( t ) laứ NFA cho bieồu thửực chớnh quy s vaứ t
- Vụựi s | t xaõy dửùng NFA hoón hụùp N (s| t)
i
start f
∈N(s)
N(t) ∈∈
∈
- Vụựi bieồu thửực st, xaõy dửùng NFA hoón hụùp N (st)
start
i f
N(t)N(s)
- Vụựi bieồu thửực s* , xaõy dửùng NFA N (s*)
start
i f
∈
∈
∈
∈
- Bieồu thửực s thỡ N (s) laứ NFA nhaọn daùng L (s)
Caực tớnh chaỏt cuaỷ NFA xaõy dửùng theo caỏu truực Thompson’
Thớ duù 3.7.
Giaỷi thuaọt 3.4. Moõ phoỷng NFA
Nhaọp: NFA goùi laứ N ủửụùc xaõy dửùng theo giaỷi thuaọt 3.3, chuoói nhaọp x. 
X ủửụùc keỏt thuực baống eof, N coự traùng thai baột ủaàu s0 vaứ taọp traùng thaựi
keỏt thuực F.
Xuaỏt: Giaỷi thuaọt traỷ lụứi ủuựng neỏu N chaỏp nhaọn x, ngửụùc laùi traỷ lụứi sai
Phửụng phaựp:
Giaỷi thuaọt: Moõ phoỷng 3.4.
Thớ duù 3.8. Giaỷ sửỷ ta coự NFA ụỷ (H.3.13 ), x laứ chuoói nhaọp chửựa a. 
Duứng giaỷi thuaọt 3.4 xeựt xem NFA coự chaỏp nhaọn x ?. Keỏt quỷa giaỷi thuaọt
traỷ lụứi sai ( nghiaừ laứ a khoõng thuoọc ngoõn ngửừ do NFA nhaọn daùng
Thụứi gian vaứ khoõng gian caàn thieỏt cho vieọc nhaọn daùng moọt chuoói nhaọp:
- ẹoỏi vụựi DFA: khoõng gian O (2 ( )) vaứ thụứi gian O (|x | ).
- ẹoỏi vụựi NFA: khoõng gian O (|r | ) vaứ thụứi gian O (| r | * | x | ).
3.10. Xaõy dửùng DFA trửùc tieỏp tửứ bieồu thửực chớnh quy vaứ vaỏn ủeà toỏi
ửu hoựa vieọc so truứng maóu
1. Traùng thaựi quan troùng cuỷa NFA
Traùng thaựi quan troùng laứ tửứ noự coự sửù truyeàn khaực roóng. Nhử vaọy neỏu
hai taọp traùng thaựi coự cuứng soỏ traùng thaựi quan troùng thỡ chuựng ủửụùc
ủoàng nhaỏt. NFA ủửụùc xaõy dửùng theo caỏu truực Thompson’ coự traùng thaựi
keỏt thuực khoõng coự sửù truyeàn ra, nhử vaọy noự khoõng phaỷi laứ traùng thaựi
quan troùng ( nhửng thửùc sửù noự laùi raỏt quan troùng ). ẹeồ traựnh tỡnh traùng
naứy ngửụứi ta theõm kyự hieọu # vaứo sau bieồu thửực chớnh quy, vaứ traùng
thaựi keỏt thuực coự sửù truyeàn treõn kyự hieọu #. Khi xaõy dửùng taọp con hoaứn
taỏt thỡ traùng thaựi naứo coự sửù truyeàn treõn # laứ traùng thaựi chaỏp nhaọn.
- Bieồu thửực r# ủửụùc goùi laứ bieồu thửực chớnh quy gia toỏ.
Vaờn phaùm cuỷa bieồu thửực chớnh quy:
exp → exp | term exp → term term → term • factor
term → factor factor → factor* factor → ( exp )
factor → a factor → b
Hỡnh 3.16. Caõy phaõn raừ cuỷa bieồu thửực gia toỏ (a| b )* abb#
a
3
b
4
#
6b
5
a
1
b
2
*
• •
• •
Hỡnh 3.17. NFA ủửụùc xaõy dửùng tửứ ( a| b )* abb#
Lửu yự:
- Caực traùng thaựi ủửụùc kyự hieọu baống soỏ laứ traùng thaựi quan troùng; Caực
traùng thaựi ủửụùc kyự hieọu baống chửừ laứ traùng thaựi khoõng quan troùng.
- ễÛ thớ duù 3.6 traùng thaựi A vaứ C coự cuứng soỏ traùng thaựi quan troùng laứ
2,4,7 , trong (H 3.17) laứ 1,2,3:
A = {0,1,2,4,7} C = {1,2,4,5,7}
Astart
∈
B F
2∈
a
#
b
a
1
4
C
D
F 3 6
∈
∈
∈ b4 ba
∈
∈
∈
Baỷng 3.6. Caực quy taộc ủeồ tớnh ba haứm nullable, firstpos, lastpos
Nuựt n nullable (n) firstpos (n) lastpos (n)
n laứ nuựt coự teõn
laứ ∈
true
n laứ nuựt coự teõn
laứ vũ trớ i false {i} {i}
nullable(c1) or
nullable(c2)
firstpos(c1) ∪
firstpos(c2)
lastpos(c1) ∪
lastpos(c2)
nullable(c1) and
nullable(c2)
if nullable(c1) 
then firstpos(c1) ∪
firstpos(c2) 
else firstpos(c1)
if nullable(c2) 
then lastpos(c1) ∪ lastpos(c2) 
else lastpos(c2)
true firstpos(c1) lastpos(c1)
n
c2c1
|
c2c1
° n
c1
∗ n
Caực quy taộc tớnh haứm followpos (n):
1. Neỏu nuựt n laứ nuựt cat vụựi con beõn traựi laứ c1, con beõn phaỷi laứ c2 vaứ i laứ
vũ trớ trong lastpos(c1), thỡ taỏt caỷ vũ trớ trong first(c2) seừ cho vaứo
followpos(i).
2. Neỏu n laứ nuựt star vaứ i laứ vũ trớ trong lastpos(n) thỡ taỏt caỷ caực vũ trớ
trong firstpos(n) seừ cho vaứo followpos(i).
Thớ duù 3.10. Ta xaực ủũnh DFA cho bieồọu thửực (a | b)* abb
{1}a {1} {2}a {2}
# {6}
∗
{1,2} {1,2}
{1,2} {1,2}
{5}a{5}
{4}a{4}
{3}a{3}
{1,2,3}
{1,2,3} {1,2,3}
{1,2,3}
{3}
{4} {5}
{6}
{6}
Hỡnh 3.19. Tớnh caực haứm nullable, firstpos, lastpos cho caực nuựt treõn caõy
phaõn tớch cuỷa bieồu thửực ( a| b )* abb
Sau ủoự ta tớnh haứm followpos.
Baỷng 3.7. caực trũ followpos cuỷa caực nuựt treõn caõy ụỷ (H.3.19) 
Nuựt followpos
1 {1,2,3}
2 {1,2,3}
3 {4}
4 {5} 
5 {6} 
6 _
Giaỷi thuaọt 3.5. Xaõy dửùng DFA tửứ bieồu thửực chớnh quy
Nhaọp: Bieồu thửực chớnh quy r.
Xuaỏt: DFA goùi laứ D, nhaọn daùng ngoõn ngửừ L( r)
Phửụng phaựp :1. Xaõy dửùng caõy phaõn tớch cho BTCQ gia toỏ r#.
2. Tớnh caực haứm nullable, firstpos, lastpos vaứ followpos cho caực nuựt
treõn caõy phaõn tớch
3. Xaõy dửùng caực traùng thaựi, haứm truyeàn vaứ baỷng truyeàn cho D baống
thuỷ tuùc ụỷ (moõ phoỷng 3.5).
Thuỷ tuùc taùo taọp con laứ caực traùng thaựi cuỷa DFA:
Luực ủaàu D chổ coự moọt traùng thaựi baột ủaàu laứ firstpos(root) , chửa ủửụùc
ủaựnh daỏu.
Moõ phoỷng 3.5. Thuỷ tuùc taùo taọp con
while coự traùng thaựi T chửa ủửụùc ủaựnh daỏu, trong taọp traùng thaựi
cuỷa D do begin ủaựnh daỏu T;
for vụựi moói kyự hieọu nhaọp a do;
begin vụựi U laứ taọp caực vũ trớ trong followpos (p), p laứ vũ trớ trong
T, sao cho kyự hieọu taùi vũ trớ p laứ a;
if U khoõng roóng vaứ chửa coự trong taọp traùng thaựi cuỷa D
then begin theõm U vaứo taọp traùng thaựi cuỷa D vaứ laứ traùng thaựi
chửa ủửụùc ủaựnh daỏu;
D[T, a] := U;
end;
end;
end;
Lửu yự: traùng thaựi keỏt thuực cuỷa D coự chửựa vũ trớ cuỷa y.
Thớ duù 3.10. Xaõy dửùng DFA tửứ btcq ( a| b )* abb. (trang 103 -104)
3. Toỏi thieồu soỏ traùng thaựi cuỷa DFA
- Khaựi nieọm DFA ủaày ủuỷ, traùng taựi cheỏt d.
- Chuoói w phaõn bieọt traùng thaựi s vụựi traùng thaựi t.
Thớ duù: DFA ụỷ (H.3.14, tr. 90), neỏu xuaỏt phaựt tửứ C ủeồ nhaọn daùng w=bb 
thỡ khoõng ủi ủửụùc ủeỏn traùng thaựi chaỏp nhaọn, ngửụùc laùi tửứ B thỡ ủi ủeỏn E 
laứ traùng thaựi chaỏp nhaọn.
Giaỷi thuaọt 3.6. Toỏi thieồu soỏ traùng thaựi cuỷa DFA.
Nhaọp: DFA, goùi laứ M coự S, Σ, s0, F. M laứ DFA ủaày ủuỷ.
Xuaỏt: DFA, goùi laứ M’ chaỏp nhaọn ngoõn ngửừ nhử M, vụựi soỏ traùng thaựi
nhoỷ nhaỏt.
Phửụng phaựp: 
1.Taùo Π khụỷi ủaàu coự 2 nhoựm: caực traùng thaựi keỏt thuực F, vaứ caực traùng
thaựi khoõng keỏt thuực S – F.
2. AÙp duùng thuỷ tuùc (moõ phoỷng 3.6) ủeồ taùo Πnew .
3. Neỏu Πnew = Π thỡ Πfinal = Π, tieỏp tuùc bửụực 4, ngửụùc laùi laởp laùi bửụực
2, vụựi Π = Πnew
4. Chuựng ta choùn moói nhoựm 1 traùng thaựi ủaùi dieọn vaứ ủoự laứ traùng thaựi
cuỷa M’ .
5. Neỏu M’ coự traùng thaựi cheỏt d thỡ loaùi noự ra khoỷi M’. Taỏt caỷ caực sửù
truyeàn ủeỏn traùng thaựi d ủeàu khoõng xaực ủũnh.
Moõ phoỷng 3.6. Giaỷi thuaọt taùo Πnew
for vụựi moói nhoựm G cuỷa Π do begin
- chia G thaứnh caực nhoựm nhoỷ hụn sao cho hai traùng thaựi s vaứ t 
cuỷa G seừ ụỷ cuứng moọt nhoựm nhoỷ hụn neỏu vaứ chổ neỏu caực sửù truyeàn treõn
taỏt caỷ caực kyự hieọu nhaọp a tửứ s vaứ t ủeàu ủi ủeỏn caực traùng thaựi keỏ tieỏp ụỷ
trong cuứng moọt nhoựm cuỷa Π;
- ta thay G baống caực nhoựm nhoỷ hụn vửứa ủửụùc taùo neõn, cho
chuựng vaứo Πnew ;
end; 
Thớ duù 3.11. Cho DFA nhử ụỷ (H. 3.14, tr. 90).
Caựch giaỷi ụỷ tr. 106 – 107.
4. Caực phửụng phaựp neựn baỷng truyeàn FA
1. Thu giaỷm haứng vaứ coọt dử thửứa
Hỡnh 3.21. Baỷng truyeàn ủửụùc neựn baống phửụng phaựp thu giaỷm haứng vaứ
coọt dử thửứa
0 – 0 1 0000 222222222 0 – 0 3 0 – 0 
0
1
2
3
4
4
0 0 -1 3 1 -1
1 1 -1 2 1 5
2 2 -1 -1 2 5
3 3 -1 -1 2 -1
4 4 -1 -1 -2 -1
5 4 -1 -1 4 -1
0 1 2 3
yrmap
y next
2. Neựn caởp
Hỡnh 3.22. Baỷng truyeàn neựn theo phửụng phaựp neựn caởp
0 • 7 ‘0’,3 ‘0’,1 ‘1’,1 ‘2’,1 ‘3’,1 ‘4’,2 ‘5’,2 ynext 0
1 • 0 -1-112-1..1111111111-1-1 5-1 ynext 1
2 • 6 ‘0’,2 ‘1’,2 ‘2’,3 ‘3’,4 ‘4’,1 ‘5’,1 ynext 2
3 • 7 ‘0’,1 ‘1’,1 ‘2’,2 ‘3’,2 ‘4’,2 ‘5’,2 ‘6’,2 ynext 3
4 • 7 ‘0’,4 ‘1’,4 ‘2’,4 ‘3’,2 ‘4’,2 ‘5’,2 ‘6’,2 ynext 4
5 • 6 ‘0’,2 ‘1’,2 ‘2’,2 ‘3’,2 ‘4’,1 ‘5’,1 ynext 5
ynext
Moõ phoỷng 3.7. Giaỷi thuaọt tỡm traùng thaựi keỏ tieỏp treõn baỷng truyeàn ủaừ
ủửụùc neựn
row := ynext [t];
I := row^[0], /* row^ laứ ma traọn 1 chieàu ynext t */
if I = 0 then
begin c := ord (a)
s := row^[c]; /* s laứ traùng thaựi keỏ tieỏp */
end
else begin
while (a row^ [i]. chart) and (i < I) do
i := i + 1;
if a = row^[i]. chart then s := row^[i]. State
else writen (‘sai – loói tửứ vửùng’);
end;
3.11. Thieỏt keỏ boọ sinh boọ phaõn tớch tửứ vửùng
Hỡnh 3.23. Trỡnh bieõn dũch Lex vaứ Boọ phaõn tớch tửứ vửùng
Chửụng trỡnh moõ phoỷng FA vaứ
baỷng truyeànTrỡnh bieõn dũch
Lex
a)
Chửụng trỡnh
moõ phoỷng FA
Baỷng truyeàn
b)
ẹaởc taỷ lex
Boọ ủeọm nhaọp
1. Maóu so truứng treõn cụ sụỷ NFA
Hỡnh 3.24. NFA ủửụùc tao ra tửứ sửù ủaởc taỷ LEX
so N(pi)
∈
∈
N(p1)
N(pn)
∈

File đính kèm:

  • pdfbai_giang_trinh_bien_dich_chuong_3_phan_tich_tu_vung.pdf