Professional Documents
Culture Documents
Chuong 4 - Dich Truc Tiep Cu Phap
Chuong 4 - Dich Truc Tiep Cu Phap
Chuong 4 - Dich Truc Tiep Cu Phap
V d:
E = (a+b)*c.
2.2. Gii thut dch biu thc s hc thng thng sang biu thc dng Postfix
Vo: Infix Ra: Postfix. Phng php: Gn cho mi ton t c mt mt s nguyn khng m (), ch mc u tin, s ln hn c mc u tin cao hn. V d: P.ton Mc +, 0 *, /, 1 2 Dng 1 buffer v 1 Stack. a). Ban u: Stack rng; Buffer cha biu thc, dng con tr xc nh v tr cc k hiu hin xt trong biu thc, ban u tr vo k hiu tri nht. b). Nu k hiu c tr l tn bin, hng th xut ra gii ra. Ngc li(du php ton), th so snh mc u tin ca php ton ang xt 1 vi mc u tin ca php ton ang nm trn nh Stack 2 . Nu Mc (1 ) > Mc (2 ) hoc Stack ang rng th ghi 1 vo Stack ; Nu M (1 ) M(2 ) , th a 2 ra gii ra v a 1 vo Stack. c). Nu biu thc kt thc th c tt c php ton Stack v a ra gii ra. ( Stack: du tri nht nm nh Stack)
TT
Vo
Stack
Ra
1 2
3 4 5 6 7 8
a +
b * c + 3 Kt thc
a +
+ +, * +, * +, + +, + c * 3 ++ b
abc*3++
TT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Vo NEG a + b * c ( d e ) / f Kt thc
Ra a NEG b c
d e f /*+
2.4. i vi php gn
a du := vo tp Php ton vi mc 2 nhng khng c tnh cht so snh; Du := c a vo Stack khng km theo vic c bt k mt ci g; S c mt ca du := Stack cho n lc duyt xong.
TT 1 a 2 3 4 5 6 7 8 := b + y /
Vo := := := + := + := + / := + /
Stack
Ra
a
b y z /, +, :=
z Kt thc
Postfix s l: a b y z / + :=
Bi tp:
Dch cc biu thc sau y thnh dng hu t v cho bit ni dung ca Stack tng bc dch.
(a). x y/z * x+ p * q * t y z (b). 2 * p q * z *x/w + c * d (c). 7 * x 2 * y2 * z 14 * z 2 * x * y2 (d) . (a + b)/(- c - d)(k + l * m - n) 3
3.1. Cy c php
Cy c php (syntax - tree) l dng rt gn ca cy phn tch c php dng biu din cu trc ngn ng Trong cy c php cc ton t v t kha khng phi l nt l m l cc nt trong.
XY DNG CY C PHP CHO BIU THC Tng t nh vic dch mt biu thc thnh dng hu t Xy dng cy con cho biu thc con bng cch to ra mt nt cho mi ton hng v ton t
xy dng cy c php cho biu thc chng ta s dng cc hm sau y tng ng vi 3 loi nt:
1. mknode(op, left, right): To mt nt ton t c nhn l op v hai trng cha con tr, tr ti left v right 2. mkleaf(id, entry): To mt nt l vi nhn l id v mt trng cha con tr entry, tr ti trong bng k hiu 3. mkleaf(num,val): To mt nt l vi nhn l num v trng val, gi tr ca s
th c hng khng cha chu trnh cho biu thc (Directed Acyclic Graph - DAG)
DAG cng ging nh cy c php, tuy nhin trong cy c php cc biu thc con ging nhau c biu din lp li cn trong DAG th khng. Trong DAG, mt nt con c th c nhiu cha.
xy dng mt DAG, trc khi to mt nt phi kim tra xem nt tn ti cha, nu tn ti th hm to nt (mknode, mkleaf) tr v con tr ca nt tn ti, nu cha th to nt mi.
Assign a + *
a:= b*-c+b*-c
Xt biu thc a+a* (b-c) + (b-c) *d Postfix s l: aabc-*+bc-d*+. Xy dng DAG. (1). p1:= mkleaf (id, a); (7). p7 := mknode (+, p1, p6);
* Gi s Ngn ng ta ch tha nhn 2 loi lnh: Si := A v Si := Si op S i+1, trong A l tn bin hoc hng, cn op l php ton (C th cho php lnh Si := - Si). Th vic dch t dng Balan ngc sang Ngn ng ta ch thc cht l da trn vic sinh ra dy cc lnh c 2 dng trn.
* Qu trnh dch, s sng 1 Stack v tun th quy tc sau y. (a). t i = 0, k = 1. (k ch th t k hiu vo ca dng hu t). (b). c phn t th k (k) t dng Balan ngc. (c). Nu k l tn bin hoc hng, th t Si := k v i := i +1. Nu k l k hiu ton t v op NEG, th S i-2 := S i-2 op S i1 , i := i 1. Nu k = NEG, th S i-1 := - S i-1. (d). Nu k cha phi k hiu cui cng trong biu thc Balan, th k := k+1 v quay li (b).
Ta c
TT
Stack
Action i i := 0
Action k k := 1 k := k + 1 k := k + 1 0 1 1 2 3 2
i 1 2 3 4 5 6
1 2 3 4 5
S0 := b S0 := - S0 S1 := a S2 := b S1 := S1 S2
i := i + 1
i := i + 1 i := i + 1 i := i 1
k := k + 1 k := k + 1 k := k + 1
6
7 8
S2 := c
S2 := - S2 S1 := S1S2
i := i + 1
i := i 1
k := k + 1
k := k + 1 k := k + 1
3
3 2
7
8 9
S0 := S0 * S1
i := i 1
k := k + 1
10
Bi tp: Dch sang chng trnh ch (my) dng trung gian theo hu t. (1). a b c * + d e / f * (2). 1 x NEG y + 2 x 2 y 2 + 1 + / +
Bi tp: Dch sang chng trnh ch (my) dng trung gian theo hu t. (1). a, b, c, *, +, d, e, /, f, *, (2). 1, x, NEG, y, +, 2, , x, 2, , y, 2, , +, 1, +, /, + (3). Bng php dch sang Balan ngc, sau (nu c th c) to chng trnh ch dng trung gian phn tch cc xu sau y v ch r li, gii thch? +). a * (b +c(d + e ) f
+). a +/ b
+). (a + b) c
3.3. M 3 a ch
M 3 a ch (three address code) l cu lnh c dng tng qut: x := y op z Trong x, y, z l cc tn, hng hoc tn tm do trnh bin dch sinh ra; op l mt ton t no . Vy, mi cu lnh c ti a 3 i, ti a 1 ton t (tr := ). V th, khi to ra nhng lnh ny, trnh bin dch phi: Quyt nh th t thc hin cc thao tc
To ra 1 tn tm gi gi tr do lnh tnh ra
Thut ng: 3 a ch l: 2 cho ton hng; 1 cho kt qu.
Biu thc NN ngun c dng: x + y * z , ta c th dch thnh: t1 := y * z; t2 := x + t1. Vic tho nh cc biu thc s hc phc tp v cc cu lnh iu khin lm cho m 3 a ch tr thnh 1 Ngn ng thit yu i vi vic dch thnh m ch. M 3 a ch l mt biu din tuyn tnh ha ca cy c php v DAG, trong cc tn tng minh ng vi cc nt trong.
*
b c
Trong trng hp i vi DAG (v d 1), ta c: t1 := -c; t2 := b*t1; t5 := t2+t2; a := t5.
-
Cc ch th gn dng:
Cc cu lnh sao chp: c gn cho x.
x := op y
x := y Trong gi tr ca y
Lnh nhy khng iu kin: Goto L, trong cu lnh 3 a ch c nhn L l cu lnh c thc thi tip theo.
..
..
Ch :
Dng li cc tn tm: Trnh bin dch sinh ra tn tm mi khi cn dng n. Tuy nhin, cc tn tm c dng gi cc gi tr trung gian trong cc tnh ton biu thc thng hay lm ri bng k hiu. khc phc, ngi ta thng gom cc tn tm ring bit vo cng mt vng nh trong khi sinh m, mng nh ging nh mt Stack. minh ha, chng ta hn ch ch x l cc s nguyn. Dng mt con m c, bt u bng 0. Mi khi cn dng 1 tn tm lm ton hng, gim c i 1. Mi khi sinh ra mt tn tm, tng c ln 1. Lu v ti gi tr cc tn tm do trnh bin dch thc hin dng nh ch xy ra nh Stack.
x := t0
Bi tp: