IT4073:NGÔN NG
PHƯƠNG PHÁP DCH
PhmĐăng Hi
haipd@soict.hut.edu.vn
29/18/2012
Chương 2: Phân tích tvng
1. Nhimvcabphân tích tvng
2. Biuthc chính quy
3. Ô tô mát huhn
4. Phân tích tvng cangôn ngPL/0
39/18/2012
Mcđích & Nhimv
•Mcđích:
Tìm chuidài nhtcáckýtựđuvào, btđầut t
hintitương ng vimttt trvttnày
•Nhimv
–Duyttng tcavănbnngun
•Loibcáckýtkhông cnthiếtnhưdu cách, chú thích,..
–Xâydng tvng tnhng tựđcđược
–Nhndng tt giti pha tiếp
Nhnbiếtttgm
–Nhnbiếtcáctkhóa, tên do ngườidùngđịnh nghĩa
–Nhnbiết các con s, hng chui, hng t
–Nhnbiếtcáckýtựđcbit (+,*,..), ký hiu kép (:=,!=,..)
1. Nhimvcabphân tích
49/18/2012
Tvng Tt
Tvng (Lexeme)
–Làđơnvnhnht trong ngôn nglptrình
Được coi hiucamtbng chca ngôn ng
Đượcxâydng tcáckýtASCII
Tt(Token)
–Làthutngdùng chcác tvng cùng ý
nghĩa pháp
•Cóthcoi tvng nhng tcthtrong từđin:
hôm nay”, “tri”, “đẹp”; còn tt loit: “trng t”,
danh t”, “tính t”,..
1. Nhimvcabphân tích
59/18/2012
Tt d
•“pos”, “start”, “size”, “+”, “10”, “*”,”:=“, “;”làtvng
•“
pos”, “start”, “size”, các tvng thuclptt
tên (ident)
•”
:=tvng cattgán (assign)
•“
10tvng cattsnguyên (number)
•“
+tvng cattcng (plus)
•“
*tvng cattnhân (times)
•“
;tvng cattchmphy(semicolon)
1. Nhimvcabphân tích
pos := start + 10 * size;
69/18/2012
TtChú ý
1. Nhimvcabphân tích
•CácttIdent, number, plus, assign,... do người
viếttrìnhdch tựđnh nghĩađể ddàng cho vicmã
hóa chương trình. Đây vicshóa hiu
•Mttt thểứng vitpcáctvng khác nhau
nên cnthêmmtsthông tin khác để biếtđược
cthểđólàtvng nào
–Cácchui“
19”, “365đềulàchuis, có ttnumber”,
nhưngkhisinhmãcnphibiếtrõgiátr 19 hay 365
•Bphân tích tvng không chnhndng được
các tt còn phibiếtthuc tính tương ng
–Tttác động đếnbphân tích pháp
–Thuctínhsdng trong bsinh
79/18/2012
Thchin
•Thchinlpdavàoyêucutbptcp
–Bptcp khi cnmtttsgigetToken()
–Nhnđượcy/cu, bpttv sẽđccáckýtcho tikhixây
dng xong tvng nhnratthocgpli
•Thường bpttv được chia thành 2 phnchính
Đọckýt
–Xâydng tvng nhndng tt
1. Nhimvcabphân tích
Phân tích
tvng
Phân tích
pháp
Bng hiu
Chương
trình ngun
Token
getToken()
89/18/2012
Mu (Pattern)
•Làlutđể tmtttnào đó
–Cơsphân bit& nhndng các ttkhác nhau
•Chuikýtcùng thamãnmtlut cùng mttt
•Tt tên riêng camtlutmôt, tvng mt
trường hpthamãnlut
•Víd
–LutmôtcattIdent
•Btđầulàmtchcái
•Tiếp theo thpchcái, chs
–Lutmôtcattassign
•Btđầubikýt:”, ngay sau đólàkýt=
•Lutđượcmôtbibiuthc chính quy
1. Nhimvcabphân tích
99/18/2012
Chương 2: Phân tích tvng
1. Nhimvcabphân tích tvng
2. Biuthc chính quy
3. Ô tô mát huhn
4. Phân tích tvng cangôn ngPL/0
109/18/2012
Giithiu
2. Biuthc chính quy
Ngôn ng:Tphpcacáccâu/ xâu(string)
Câu: Dãy huhncacáct/ký hiu(
symbol)
T:Đượcto nên tmtbchhuhn
d:
–NgônngC là tpcáccâulnh to nên các chương
trình C hpl
–Bchcho ngôn ngC là tpcácchcái ASCII
•Mt ngôn ng th hn, hochuhn
•Mt ngôn ng( th hn) có thểđưcmôt
huhnnhsdng biuthc chính quy :
–Mibiuthcđặctrưng cho mttp câu/xâu
–Chxét xâu thuc ngôn ngkhông, chưa xét ý nghĩa
caxâu
119/18/2012
Biuthc chính quy (regular expression)
Cho Σ mtbng chcamt ngôn ng.
biuthc chính quy biudin ngôn ng
ε biuthc chính quy biudin ngôn ng{ε}
a Σ, a là biuthc chính quy biudintp{a}
–Nếur s các biuthc chính quy biudin
các tpxâuR Stương ng thì (r + s), (r.s), (r*)
các biuthc chính quy biudincáctpxâu
R
S, RS R* tương ng.
Ngôn ngữđưc xác định bibiuthc chính
quy e, ký hiulàL(e) ngôn ngchính quy
2. Biuthc chính quy
129/18/2012
Biuthc chính quyGhi chú
•Biuthc(r + s) thểđưcviết(r |s);
•Biuthc(r.s) thành (rs)
•Cóthbqua ký hiuε
–( a | ) (a | ε) // cũng thviếta?
•Cóthbngocđơnbiđịnh nghĩatht
ưutiên
Phép đóng Kleene (*) ưutiênhơn phép ghép(.)
Phép ghép(.) ưutiênhơn phép hoc (+)
•Quyước
[abcd] (a|b|c|d)
[a-f] [abcdef]
–[a-fA-F] [abcdefABCDEF]
2. Biuthc chính quy
139/18/2012
Biuthc chính quy d
Cho Σ={a,b} mtbng ch.
–e1= a*+b* L(e1) = {ε,a,aa,aaa,…,b,bb,..}
–e2= a*b* L(e2) = {ε,a,b,aa,ab,bb,aaa,..}
–e3= a(a+b)*
L(e3)={a,aa,ab,aaa,aab,aba,abb,..}
Xâu dng: btđầulàkýhiu a, tiếptheolàt
hpbtkca các hiua, b
•Nếua làmtchcái, b là chs
L(e3) là ngôn ngchacáctên
e3biuthc chính quy sinh tmttên
2. Biuthc chính quy
149/18/2012
Tính chtđạiscabtcq
•2 biuthc chính quy tương đương nếu
cùng xác định mt ngôn ng
•Nếu r, s, t là các biuthc chính quy
r + s = s + r r + r = r
( r + s) + t = r + s + t = r + (s + t)
(r.s).t = r. s. t = r. (s. t)
–r.ε= ε.r = r
–r + = + r = r
r(s+t) = rs + ts (r+s)t = rt + st
r + r* = r* ; (r + ε)* = r* ; (r*)* = r*
rr* = r*r = r+
(r+s)* =(r*s*)*
2. Biuthc chính quy
159/18/2012
Vănphm chính quy Ngôn ngchính quy
Vănphm chính quy
–Vănphmmàmisnxutcódng
Aa|aB hocAa|Ba
Dùng dinttvng ca NNLT
<Tên><Chcái>|<Tên> <Chcái>|<Tên><Chs>
<Tên>“a” |”b” |”c” |….|”z”|”A”|”B”|…|”Z”
<Chs> ”0” | ”1” | ”2” | ”3” |”4” | ”5” |”6” | ”7” |”8” |”9”
–Vănphm chính quy sinh ra ngôn ngchính quy
Ngôn ngchính quy
Đượcbiudin(
t) bibiuthc chính quy
Đoán nhnbi các Otomat huhn
2. Biuthc chính quy
169/18/2012
Ngôn ngchính quy Vănphm chính quy
r biuthc chính qui cnchuyn
1. Thêm hiukhiđầuS tosan xutS r
2. Loibkhivănphm các siêu hiucar
SX dng A r1.r2: Thêm hiu không
kết thúc B và thay thành 2 SX:
A r1B& B r2
SX dng A r1+r2: Thay biA r1|r2
SX dng A r1* r2: Thêm hiu không
kết thúc B và thay thành 4 snxut
A r1B& A r2& B r1B& B r2
2. Biuthc chính quy
179/18/2012
d
Chuynđổibiuthce = a(a+b)*
1. Thêm S và snxutSa(a+b)*
2. Loibcáckýhiu không thucbch
Xét r = a(a+b)* //r1=a; r2 = (a+b)*
Thêm A và các SX SaA & A (a+b)*
Xét A (a+b)* // r1= a+b ; r2= ε
Thêm B và các SX
A(a+b)B & A →ε &B(a+b) & B →ε
–Ápdng lut phân phiphi
AaB+bB & A →ε & BaB+bB & B →ε
A aB|bB| ε B aB|bB| ε
2. Biuthc chính quy
189/18/2012
d
Chuynđổibiuthce = a(a+b)* (tiếp)
–Loib hiuεbitoraxâumi
B aB|bB| εthành B aB|bB| a | b
A aB|bB| εthành A aB|bB| a | b
Vai trò caA vàB làtương đương. Thay
hiuB bng A và loibB
Kếtqu: Vănphmcui
S a |aA
A aA | bA | a | b
2. Biuthc chính quy
199/18/2012
Chương 2: Phân tích tvng
1. Nhimvcabphân tích tvng
2. Biuthc chính quy
3. Ô tô mát huhn
4. Phân tích tvng cangôn ngPL/0
209/18/2012
t
•Gmmttpcáctrng thái Q
–Cómttrng thái đầuq0Q
–Cómttptrng thái kếtthúc F Q
•Mtbchvào Σ
•Mttp các hàm dch chuynδ:(Q x Σ) Q
Hotđộng
–Ô-tô-mátxutphátttrng thái đầu, đọctng hiu
ca xâu vào, chuyntrng thái datrên trng thái hin
thivàkýhiuđọcđược.
–Saukhiđọchếtxâuvàomàô-tô-máttrng thái kết
thúc, xâu đượcgilàđượcđoán nhnb-tô-mát
3. Ô tô mát huhn