Chuong 2 - Muc 2.2 - Nguyen Minh Duc - K26A - Tp.hcm
description
Transcript of Chuong 2 - Muc 2.2 - Nguyen Minh Duc - K26A - Tp.hcm
-
B GIO DC V O TO B QUC PHNG
HC VIN K THUT QUN S
KHOA CNG NGH THNG TIN
TIU LUN MN HC NGUYN L CHNG TRNH DCH
CHNG 2 - MC 2.2
Ging vin hng dn: TS. H CH TRUNG
Sinh vin thc hin:
NGUYN MINH C
Lp: CHKHMT-TPHCM26A14
M hc vin: 14870224
Thng 4 nm 2015
-
MC LC
Ni dung Trang
2.2. C php cu lnh ........................................................................................................ 1
2.2.1. nh ngha ca vn phm ....................................................................................... 1
2.2.2. Ngun gc ............................................................................................................... 3
2.2.3. Cy phn tch c php ............................................................................................. 5
2.2.4. S khng r rng ..................................................................................................... 7
2.2.5. S kt hp ca cc ton t ...................................................................................... 8
2.2.6. S u tin ca cc ton t ....................................................................................... 9
2.2.7. Cc bi tp cho phn 2.2 ....................................................................................... 13
-
Trang - 1 / 14 -
CHNG 2
C PHP BIN DCH TRC TIP
2.2. C php cu lnh
Trong phn ny, chng ti gii thiu mt k hiu hay cn gi l
"bi cnh vn phm t do", hay "vn phm" cho ngn, k hiu c s
dng xc nh c php ca mt ngn ng. Vn phm s c s dng trong
sut cun sch ny t chc kt thc trc bin dch.
Mt vn phm t nhin m t cc cu trc phn cp ca hu ht cc cu
trc ngn ng lp trnh. V d, mt lnh if-else trong Java c th c cc hnh
thc
if (biu thc) lnh else lnh
y l, mt lnh if-else l ni ca cc t kha if, mt du m ngoc n,
mt biu hin, mt ng ngoc, mt tuyn b, t kha else, v mt lnh khc.
S dng bin expr biu th mt biu thc v cc bin stmt biu th mt
tuyn b, quy tc cu trc ny c th c th hin nh:
stmt if (expr) stmt else stmt
trong cc mi tn c th c c l "c th c cc hnh thc". Quy nh nh
vy c gi l mt sn xut (production). Trong sn xut, cc yu t t vng
nh cc t kha if v cc du ngoc n c gi l thit b u cui
(terminals). Bin nh expr v stmt i din cho chui cc thit b u cui v
c gi l thuc u cui (nonterminals).
2.2.1. nh ngha ca vn phm
Mt bi cnh vn phm t do gm c bn thnh phn:
1. Mt tp hp cc k hiu thit b u cui, i khi c gi l "th". Cc
thit b u cui l cc biu tng c bn ca ngn ng c xc nh bi cc
vn phm.
-
Trang - 2 / 14 -
2. Mt tp hp cc thuc u cui, i khi c gi l "bin c php."
Mi thuc u cui i din cho mt b dy ca thit b u cui, trong mt
cch thc chng ti c trch nhim m t.
3. Mt tp hp cc sn xut, trong mi sn xut bao gm mt thuc
u cui, gi l u hoc bn tri ca sn xut, mt mi tn, v mt chui cc
thit b u cui v / hoc thuc u cui, gi l thn hoc bn phi ca sn
xut. Mc ch trc gic ca mt sn xut l xc nh mt trong nhng vn
bn hnh thc ca mt cu trc; nu u ca thuc u cui i din cho mt cu
trc, sau thn l mt hnh thc bng vn bn ca vic xy dng.
4. Mt ch nh mt trong nhng thuc u cui nh l biu tng bt
u.
Chng ta xc nh vn phm bng cch lit k cc sn xut, vi nhng sn
xut cho cc biu tng bt u c lit k u tin. Chng ta gi nh rng
ch s, du hiu nh < v
-
Trang - 3 / 14 -
bi thn ca chng, vi cc thn thay th tch bi cc biu tng | , m chng ta
c l "or".
V d 2.1: Mt vi v d trong chng ny biu thc s dng bao gm ch s v
du cng v tr; v d, chui nh 9 - 5 + 2, 3 - 1, hoc 7. V mt cng hoc
tr du hiu phi xut hin gia hai ch s, chng ta cp n biu thc nh
vy nh "danh sch cc ch s cch nhau bi du cng hoc tr i cc du
hiu." Vn phm sau y m t c php ca cc biu thc. Cc kt qu l:
danh sch list + ch s (2.1)
danh sch list - ch s (2.2)
danh sch ch s (2.3)
danh sch 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 (2.4)
Phn thn ca ba kt qu vi danh sch thuc u cui nh u tng
ng c th c nhm li:
danh sch danh sch + ch s | danh sch - ch s | ch s
Theo quy c ca chng ti, cc thit b u cui ca vn phm l nhng
biu tng
+ - 0 1 2 3 4 5 6 7 8 9
Cc thuc u cui l tn in nghing danh sch v ch s, vi danh sch
c bt u biu tng ca n bi v kt qu c a ra u tin.
Chng ta ni mt kt qu cho mt thuc u cui nu thuc u cui l
phn u kt qu. Mt chui cc thit b u cui l mt chui cc s 0 hoc
nhiu thit b u cui. Cc chui 0 thit b u cui, c vit nh , c gi
l chui rng (empty).
2.2.2. Ngun gc
Mt vn phm c ngun gc chui bng cch bt u vi cc biu tng
bt u v lin tc thay th mt thuc u cui bi phn thn ca mt sn xut
-
Trang - 4 / 14 -
cho thuc u cui . Cc chui thit b u cui c th c bt ngun t
nhng biu tng bt u ngn ng (language) xc nh bi cc vn phm.
V d 2.2: Cc ngn ng c xc nh bi cc vn phm ca V d 2.1 bao
gm danh mc cc ch s c phn cch bng du cng v tr. Mi kt qu
cho cc ch s thuc u cui yn cho bt k cc thit b u cui 0,1, ..., 9.
T kt qu (2.3), mt con s duy nht bi chnh n l mt danh sch. Kt qu
(2.1) v (2.2) hin cc quy tc m bt k danh sch tip theo l mt du cng
hoc tr v sau mt ch s to nn mt danh sch mi.
Kt qu (2.1) n (2,4) l tt c chng ta cn phi xc nh ngn ng
mong mun. V d, chng ta c th suy ra rng 9 - 5 + 2 l mt danh sch nh
sau:
a) 9 l mt danh sch bng kt qu (2.3), k t 9 l mt con s.
b) 9 - 5 l mt danh sch bng kt qu (2.2), k t 9 l mt danh sch v
5 l mt ch s.
c) 9 - 5 + 2 l mt danh sch bng kt qu (2.1), k t 9 - 5 l mt danh
sch v 2 l mt ch s.
V d 2.3: Mt mc no s sp xp khc nhau ca danh sch l danh sch
cc tham s trong mt hm gi chc nng. Trong Java, cc tham s c km
theo trong du ngoc n, nh trong cc gi max (x, y) ca hm max vi cc
tham s x v y. Mt sc thi nh vy danh sch l mt danh sch trng ca cc
tham s c th c tm thy gia cc thit b u cui ( v ). Chng ta c th
bt u pht trin mt vn phm cho cc trnh t nh vy vi cc kt qu:
call id ( optparams )
optparams params |
params params , param | param
Lu rng phn thn th hai c th cho optpamms ("danh sch tham s ty
chn") l , l vit tt cho chui kt qu ca cc biu tng. l, danh sch
tham s ty chn (optparams) c th thay th bng chui rng, do , mt lnh
gi (call) c th bao gm mt tn hm theo sau bi chui hai thit b u cui (
-
Trang - 5 / 14 -
). Ch rng nhng kt qu cho params l tng t nh i danh sch trong V
d 2.1, vi du phy vo v tr ca cc ton t s hc + hoc -, v param v tr
ca ch s. Chng ti khng th hin c kt qu cho param, v cc thng
s l nhng biu hin thc s c on. Mt thi gian ngn, chng ta s tho
lun v nhng kt qu thch hp cho cc cu trc ngn ng khc nhau, chng
hn nh cc biu thc, bo co, v nh vy.
Phn tch c php l vn tham gia mt chui cc thit b u cui v
tm hiu lm th no ly c n t cc biu tng bt u ca vn phm, v
nu n khng th c bt ngun t nhng biu tng bt u ca vn phm,
sau bo co li c php trong chui. Phn tch c php l mt trong nhng
vn c bn nht trong tt c cc trnh bin dch; phng thc chnh phn
tch c php c tho lun trong Chng 4. Trong chng ny, v n gin,
chng ta bt u vi chng trnh ngun nh 9 - 5 + 2 trong mi k t l mt
thit b u cui; ni chung, mt chng trnh m ngun c lexemes a nhn vt
c nhm li theo cc phn tch t vng vo th, m thnh phn u tin l cc
thit b u cui c x l bi cc c php.
2.2.3. Cy phn tch c php
Mt cy phn tch nhng bc tranh cho thy s khi u ca mt biu
tng vn phm xut pht mt chui trong ngn ng. Nu thuc u cui A c
mt kt qu A XYZ, sau mt cy phn tch c php c th c mt nt bn
trong nhn A vi ba nhn con dn nhn X, Y, Z, t tri sang phi:
A
X Y Z
Chnh thc, a ra mt bi cnh vn phm t do, mt cy phn tch c
php theo vn phm l mt cy vi cc thuc tnh sau:
1. Cc gc c dn nhn ca cc biu tng bt u.
2. Mi l c dn nhn ca mt thit b u cui hoc bng
-
Trang - 6 / 14 -
3. Mi nt ni c dn nhn ca mt thuc u cui.
4. Nu A l nhn thuc u cui ca mt s nt ni v X1, X2, , Xn l
cc nhn XI, XZ, ..., Xn l cc nhn tr v nt t tri sang phi, sau
phi c mt kt qu A X1X2 Xn. y X1, X2, , Xn tng ng cho mt
biu tng hoc l mt thit b u cui hoc mt thuc u cui. Nh mt
trng hp c bit, nu A l mt kt qu, sau mt nt c nhn A c
th c mt con duy nht nhn .
V d 2.4: Ngun gc ca 9 - 5 + 2 trong v d 2.2 c minh ha bng cc cy
trong hnh 2.5. Mi nt trong cy c dn nhn ca mt biu tng vn phm.
Mt nt ni v cc con ca n tng ng vi mt kt qu; cc nt ni tng ng
vi phn u ca kt qu, cc nt con vo phn thn.
Cy thut ng
Cy cu trc d liu con s ni bt trong vic bin son
Mt cy bao gm mt hoc nhiu nt (nodes). Cc nt c th c nhn
(labels), m trong cun sch ny thng s l biu tng vn phm.
Khi chng ta v ra mt cy, chng ta thng xuyn i din cho cc
nt bi ch cc nhn.
ng mt nt l nt gc (root). Tt c cc nt tr nt gc ch c mt v
ch mt nt cha (parent); nt gc khng c nt cha. Khi chng ta v
cy, chng ta t cc nt cha ca mt nt trn nt v v mt cnh
gia chng. Nt gc l sau l nt cao nht.
Nu nt N l cha ca nt M, th M l con ca N. Cc nt con ca mt
nt c gi l nt anh ch em rut (siblings). Chng c mt trt t, t
bn tri, v khi chng ta v ra cy, chng ta t con ca mt nt cho
trc theo cch ny.
Mt nt khng c nt con c gi l l (leaf). Cc nt khc - nhng
nt c mt hoc nhiu nt con - gi l cc nt ni (interior nodes).
Mt chu (descendant) ca mt nt N l mt trong hai chnh N, mt
nt con ca mt nt con ca N, v nh vy, i vi bt k s lng cc
cp. Chng ta ni nt N l nt ng (ancestor) ca nt M nu M l nt
chu ca N.
-
Trang - 7 / 14 -
Trong hnh 2.5, gc c dn nhn danh sch, biu tng bt u ca vn
phm trong V d 2.1. Cc con ca nt gc c dn nhn, t tri sang phi,
danh sch, +, v ch s. Lu rng:
danh sch danh sch + ch s
l mt kt qu trong vn phm ca V d 2.1. Cc con tri ca gc tng t nh
r, vi mt a tr c nhn - thay v +. Ba nt c nhn ch s tng c mt a
con c dn nhn bi mt ch s.
T tri sang phi, l ca mt cy phn tch hnh thnh nng sut (yield)
ca cy, m l mt chui c to ra (generated) hoc c ngun gc (derived)
t cc thuc u cui gc ca cy phn tch c php. Trong hnh. 2.5, nng
sut l 9 - 5 + 2; cho thun tin, tt c cc l c th hin cp di. T nay
tr i, chng ta s khng nht thit phi xp nt l theo cch ny. Bt c cy
truyn t mt th t tri sang phi t nhin nt l ca n, da trn tng
rng nu X v Y l hai nt con vi cng nt cha, v X l bn tri ca Y, sau
tt c nt chu ca X l bn tri nt chu ca Y.
danh sch
danh sch ch s
danh sch ch s
ch s
9 - 5 + 2
Hnh 2.5: Phn tch cy cho 9 - 5 + 2 theo vn phm trong V d 2.1
2.2.4. S khng r rng
Chng ta phi cn thn khi ni v cu trc ca mt chui theo mt vn
phm. Mt vn phm c th c nhiu hn mt cy phn tch to ra mt chui
cho trc ca thit b u cui. Mt vn phm nh vy c cho l khng r
rng/ m h(ambiguous). chng minh rng mt vn phm l khng r rng,
-
Trang - 8 / 14 -
tt c chng ta cn phi lm l tm thy mt chui thit b u cui m l nng
sut ca n hn mt cy phn tch c php. K t khi mt chui vi nhiu hn
mt cy phn tch thng c nhiu hn mt ngha, chng ta cn phi thit k cho
cc ng dng vn phm r rng son tho, hoc s dng vn phm m h vi
quy nh b sung gii quyt s m h.
V d 2.5: Gi s chng ta s dng mt chui thuc u cui duy nht v khng
phn bit gia ch s v danh sch, nh trong V d 2.1. Chng ta c th vit
vn phm
chui chui + chui | chui - chui | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Vic sp nhp cc khi nim v con s v danh sch thnh chui thuc
u cui lm cho cm gic b ngoi, bi v mt ch s duy nht l mt trng
hp c bit ca mt danh sch.
Tuy nhin, hnh. 2.6 cho thy rng mt biu thc nh 9 - 5 + 2 c nhiu
hn mt cy phn tch vn phm ny. Hai cy cho 9 - 5 + 2 tng ng vi hai
cch t biu thc vi du ngoc n: ( 9 - 5 ) + 2 v 9 - ( 5 + 2 ). Du ngoc
n th hai ny mang li cho cc biu hin nhng gi tr 2 bt ng hn l gi tr
6 thng thng. Vn phm ca V d 2.1 khng cho php iu ny gii thch.
chui chui
chui + chui chui - chui
chui - chui 2 9 chui + chui
9 5 5 2
Hnh 2.6: Hai cy phn tch c php cho 9 - 5 + 2
2.2.5. S kt hp ca cc ton t
Theo quy c, 9 + 5 + 2 l tng ng vi (9 + 5) + 2 v 9 - 5 - 2 l
tng ng vi (9-5) -2. Khi mt ton hng nh 5 c ton t bn tri v bn
-
Trang - 9 / 14 -
phi, c lng l cn thit cho vic quyt nh ton t no p dng cho ton
hng . Chng ta ni rng cc ton t + vi bn tri, bi v mt ton hng
bng du cng trn c hai mt ca n thuc v cc ton t bn tri ca n.
Trong hu ht cc ngn ng lp trnh bn ton t s hc, cng, tr, nhn, chia
c cng tri (left-associative).
Mt s ton t thng thng nh ly tha l cng phi (right-
associative). Mt v d khc, ton t gn = in C v chu ca n l cng ng;
l, biu hin a = b = c c x l trong cng mt cch nh biu thc a = (b =
c).
Chui nh a = b = c vi mt ton t cng phi c to ra bi cc vn
phm sau y:
phi th = phi | th
th a | b | | z
S tng phn gia mt cy phn tch c php cho mt ton t cng tri
nh - v mt cy phn tch c php cho mt ton t cng phi nh = c th
hin bng hnh. 2.7. Lu rng cc cy phn tch c php cho 9 - 5 - 2 pht
trin xung v pha bn tri, trong khi cc cy phn tch c php cho a = b = c
pht trin xung pha bn phi.
2.2.6. S u tin ca cc ton t
Xem biu thc 9 + 5 * 2. C hai cch gii thch ca biu thc sau: (9 + 5)
* 2 hoc 9 + (5 * 2). Cc quy tc cho cng + v * p dng cho cc ln xut hin
ca cc ton t ging nhau, nn chng khng gii quyt s khng r rng ny.
Quy nh vic xc nh cc u tin tng i ca cc ton t cn thit khi c
nhiu hn mt loi ton t l hin ti.
Chng ta ni rng * c u tin cao hn + nu * c ton hng ca n
trc khi lm +. Trong s hc thng thng, nhn v chia c u tin cao hn
cng v tr. Do , 5 c thc hin bi * trong c 9 + 5 * 2 v 9 * 5 + 2, tc l
cc biu thc tng ng vi 9 + (5 * 2) v (9 * 5) + 2, tng ng.
-
Trang - 10 / 14 -
danh sch phi
danh sch - ch s th = phi
danh sch - ch s 2 a th = phi
ch s 5 b th
9 c
Hnh 2.7: Phn tch vn phm cho cy cng tri v cng phi
V d 2.6: Mt vn phm cho cc biu thc s hc c th c xy dng t mt
bng hin th cc kt hp v u tin ca cc ton t. Chng ta bt u vi bn
ton t s hc thng thng v mt bng u tin, cho thy cc ton t theo th
t tng quyn u tin. Cc ton t trn cng mt dng c cng kt hp v u
tin:
cng tri: + -
cng phi: * /
Chng ta to ra hai thuc u cui expr v term cho hai mc u tin, v
mt yu t thuc u cui factor to ra cc n v c bn trong cc biu thc.
Cc n v c bn trong biu thc l hin ch s v biu thc trong du ngoc
n.
factor digit | ( expr )
By gi hy xem xt cc ton t * v /, m c u tin cao nht. K t khi
cc ton t cng bn tri, cc kt qu tng t nh i vi cc danh sch c
cng tri.
term term * factor
| term / factor
| factor
-
Trang - 11 / 14 -
Tng t nh vy, expr to ra danh sch thut ng c phn cch bi cc ton
t ph.
expr expr + term
| expr / term
| term
Do dn n vn phm l
expr expr + term | expr - term | term
term term * factor | term / factor | factor
factor digit | ( expr )
Vi vn phm ny, mt biu thc l mt danh sch cc t c phn cch bi
mt trong hai du hiu + hoc - , v mt thut ng l mt danh sch cc yu t
ngn cch bi du hiu * hoc / . Ch rng bt k biu hin trong ngoc n l
mt yu t, do , vi cc du ngoc n, chng ti c th pht trin cc biu
thc c t t su (v cy ty tin su).
-
Trang - 12 / 14 -
V d 2.7: T kho cho php chng ta nhn ra bo co, v hu ht cc bo
co bt u vi mt t kha hoc mt k t c bit. Trng hp ngoi l cho
quy tc ny bao gm cc bi tp v cc th tc gi. Cc bo co c xc nh
bi (s khng r rng) vn phm trong hnh. 2.8 l hp l Java.
Trong kt qu u tin cho stmt, id thit b u cui hin nhn dng bt
k. Cc kt qu cho expression khng c hin th. Cc bo co phn cng
theo quy nh ca sn phm u tin l hp l Java, mc d Java x l = nh
mt ton t gn c th xut hin trong mt biu thc. V d, Java cho php a = b
= c, m vn phm ny th khng.
Cc stmts thuc u cui to ra mt danh sch c th c kt qu no ca
bo co. Kt qu th hai cho stmts to ra cc danh sch trng . Kt qu u tin
Khi qut v vn phm th hin ca V d 2.6
Chng ti c th ngh n mt yu t nh l mt biu hin rng khng
th "tch ra" (torn apart) bi bt k ton t no. Bng cch "tch ra" chng
ta hiu rng vic t mt ton t tip theo cho bt k yu t, hai bn, khng
gy ra bt k b phn no ca cc yu t, tr ton b, tr thnh mt ton
hng ca ton t . Nu cc yu t l mt biu thc trong ngoc n, du
ngoc bo v chng li nh vy "rch", trong khi nu cc yu t l mt ton
hng duy nht, n c th khng c tch ra.
Mt thut ng (khng phi l cng l mt yu t) l mt biu thc c th
b tch ra bi cc ton t trong nhng u tin cao nht: * v /, nhng khng
phi bi cc ton t thp hn c u tin. Mt biu thc (khng phi l mt
thut ng hoc yu t) c th b tch ra bi bt k ton t no.
Chng ta c th khi qut ha tng ny cho bt k s n ca cc mc
u tin. Chng ta cn n + 1 thuc u cui. Vic u tin, nh factor trong V
d 2.6, c th khng bao gi b tch ra. Thng thng, cc phn thn kt qu
cho thuc u cui ny ch ton hng n v ngoc biu thc. Sau , vi mi
mc u tin, c mt thuc u cui i din cho biu thc c th b rch ch
bi cc ton t mc hoc cao hn. Thng thng, cc kt qu cho
thuc u cui ny c phn thn i din s dng ca cc ton t mc ,
cng vi mt phn thn ch l thuc u cui cho cp trn trc tip.
-
Trang - 13 / 14 -
to ra mt danh sch c th khng c sn phm no trong bo co tip theo mt
tuyn b.
Cc v tr ca du chm phy l tinh vi; chng xut hin phn cui ca
mi phn thn m khng kt thc trong stmt. Cch tip cn ny ngn nga s
tch t ca cc du chm phy sau cu nh if- v while-, m kt thc vi bo co
ph lng nhau. Khi bo co ph lng nhau l mt bi tp hay mt do-while, du
chm phy s c to ra nh mt phn ca bo co ph.
stmt id = expression ;
| if ( expression ) stmt
| if ( expression ) stmt else stmt
| while ( expression ) stmt
| do stmt while ( expression ) ;
| { stmts }
stmts stmts stmt
|
Hnh 2.8: Mt vn phm cho mt tp hp con ca cc bo co Java
2.2.7. Cc bi tp cho phn 2.2
Bi tp 2.2.1: Hy xem xt bi cnh vn phm t do
S S S + | S S * | a
a) Hy ch r cc chui aa + a * c th c to ra bi vn phm ny.
b) Xy dng mt cy phn tch c php cho chui ny.
c) Ngn ng to ra no vn phm ? Chng minh cu tr li ca bn.
Bi tp 2.2.2: Ngn ng no c to ra bi vn phm sau y? Trong mi
trng hp hy chng minh cho cu tr li ca bn.
a) S 0 S 1 | 0 1
-
Trang - 14 / 14 -
b) S + S S | - S S | a
c) S S ( S ) S |
d) S a S b S | b S a S |
e) S a | S + S | S S | S * | ( S )
Bi tp 2.2.3: Vn phm no trong bi tp 2.2.2 l khng r rng ?
Bi tp 2.2.4: Xy dng bi cnh vn phm t do r rng cho mi ngn ng
sau. Trong mi trng hp hy cho thy rng vn phm ca bn l chnh xc.
a) Biu thc s hc trong k hiu hu t.
b) Danh sch cng tri ca cc nh danh phn cch bng du phy.
c) Danh sch cng phi ca cc nh danh phn cch bng du phy.
d) Biu thc s hc cc s nguyn v nh danh vi bn ton t +, -, *, /.
! e) Thm nguyn phn cng v tr cho cc ton t s hc ca (d).
Bi tp 2.2.5:
a) Cho thy rng tt c cc chui nh phn c to ra bi vn phm sau y c
gi tr chia ht cho 3. Gi : S dng cm ng v s lng ca cc nt trong
mt cy phn tch c php.
num 11 | 1001 | num 0 | num num
b) Liu cc vn phm to ra tt c cc chui nh phn vi gi tr chia ht cho 3?
Bi tp 2.2.5: Xy dng mt bi cnh vn phm t do cho ch s La M.