You are on page 1of 213

Gio trnh Kin trc my tnh v H

iu hnh
1
I HC NNG
TRNG I HC BCH KHOA
KHOA CNG NGH THNG TIN
CHNG TRNH DCH
Gio trnh Kin trc my tnh v H
iu hnh
2
Mc tiu gio trnh
1. Cung cp nhng kin thc c bn v
chng trnh dch
2. Cung cp cc phng php phn
tch t vng, phn tch c php.
3. C s cho vic tm hiu cc ngn ng
lp trnh.
4. Rn luyn k nng lp trnh cho sinh
vin
TRNG I HC BCH KHOA NNG
Gii thiu
Gio trnh Kin trc my tnh v H
iu hnh
3
Ni dung gio trnh
CHNG 1. NHP MN CHNG TRNH DCH
CHNG 2. PHN TCH T VNG
CHNG 3. CC VN C BN V PHN TCH C PHP
CHNG 4. CC PHNG PHP PHN TCH C PHP
CHNG 5. PHN TCH NG NGHA
CHNG 6. X L LI V SINH M
TRNG I HC BCH KHOA NNG
Gii thiu
Gio trnh Kin trc my tnh v H
iu hnh
4

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
1. Cc khi nim c bn
2. c trng ca ngn ng lp trnh (NNLT) bc cao
3. Cc qui tc t vng v c php
4. Cc chc nng ca mt trnh bin dch
Chng 2
Gio trnh Kin trc my tnh v H
iu hnh
5

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
1. Cc khi nim c bn
1.1. S pht trin ca ngn ng lp trnh
1.2. Khi nim chng trnh dch
1.3. Phn loi chng trnh dch
1.4. Cc ng dng khc ca k thut dch
Chng 2
Gio trnh Kin trc my tnh v H
iu hnh
6

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
1. Cc khi nim c bn
1.1. S pht trin ca ngn ng lp trnh
Chng 2
NN my
(machine
language)
Hp ng
(Assembly)
NNLT bc cao
(Higher _level
language)
Gio trnh Kin trc my tnh v H
iu hnh
7

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
1. Cc khi nim c bn
1.2. Khi nim chng trnh dch
Chng trnh dch l chng trnh dng
dch mt chng trnh (CT ngun) vit trn
NNLT no (NN ngun) sang mt chng
trnh tng ng (CT ch) trn mt NN
khc (NN ch)
Chng 2
Gio trnh Kin trc my tnh v H
iu hnh
8

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
1. Cc khi nim c bn
1.3. Phn loi chng trnh dch
Trnh bin dch
CT ngun
Trnh bin
dch
CT ch
My tnh
thc thi
Kt qu
Thi gian
dch
D liu
Thi gian
thc thi
Gio trnh Kin trc my tnh v H
iu hnh
9

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
1. Cc khi nim c bn
1.3. Phn loi chng trnh dch
Trnh thng dch
CT ngun
Trnh thng
dch
Kt qu
D liu
Gio trnh Kin trc my tnh v H
iu hnh
10

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
1. Cc khi nim c bn
1.4. Cc ng dng khc ca k thut dch
- Trong cc h thng: phn giao tip gia
ngi v my thng qua cc cu lnh.
- H thng x l NN t nhin: dch thut,
tm tt vn bn.
Chng 2
Gio trnh Kin trc my tnh v H
iu hnh
11

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
2. c trng ca NNLT bc cao
- Tnh t nhin
- Tnh thch nghi
- Tnh hiu qu
- Tnh a dng
Chng 2
Gio trnh Kin trc my tnh v H
iu hnh
12

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
3. Cc qui tc t vng v c php
3.1. Bn ch ci
- Gm nhng k hiu c php s dng vit
chng trnh
- S lng, ngha s dng ca cc k t trong bn
ch ci ca cc NN l khc nhau.
- Nhn chung bn ch ci ca cc NNLT:
+ 52 ch ci: A Z, az
+ 10 ch s: 0 9
+ Cc k hiu khc:*, /, +, -,

Gio trnh Kin trc my tnh v H
iu hnh
13

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
3. Cc qui tc t vng v c php
3.2. T t (Token)
- T t l n v nh nht c ngha
- T t c xy dng t bn ch ci
- V d: hng, bin, t kho, cc php ton,
Chng 2
Gio trnh Kin trc my tnh v H
iu hnh
14

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
3. Cc qui tc t vng v c php
3.3. Phm tr c php
- Phm tr c php l mt dy t t kt hp
theo mt qui lut no
- Cc cch biu din c php thng thng
+ BNF(Backus Naus Form):
<lnhgn>::=<tn bin>:=<biu thc>

Gio trnh Kin trc my tnh v H
iu hnh
15

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
3. Cc qui tc t vng v c php
3.3. Phm tr c php
+ Biu c php:
Chng trnhProgram Danh biu Khi
Khi - var
- procedure Danh biu Khi
- begin lnh end .
- Mc tiu ca phm tr c php l vic nh
ngha c khi nim chng trnh n mc
t c
Gio trnh Kin trc my tnh v H
iu hnh
16

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
3. Cc qui tc t vng v c php
3.4. Cc qui tc t vng thng dng
- Cch s dng khong trng(du trng), du
tab(\t), du sang dng(\n)
- i vi lin kt t do, c th s dng nhiu
khong trng thay v mt khong trng.
Gio trnh Kin trc my tnh v H
iu hnh
17

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
3. Cc qui tc t vng v c php
3.4. Cc qui tc t vng thng dng
- Mt khong trng l bt buc gia cc t t:
t kho v tn,
V d: program tenct;
- Khong trng khng bt buc: s v cc
php ton, tn bin v cc php ton
V d: x:=x+3*3;
- Cch s dng ch thch v xu k t
Gio trnh Kin trc my tnh v H
iu hnh
18

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
4. Cc chc nng ca mt chng trnh bin dch
- Phn tch t vng
- Phn tch c php
- Phn tch ng ngha
- X l li
- Sinh m trung gian
- Ti u m trung gian
- Sinh m i tng
Gio trnh Kin trc my tnh v H
iu hnh
19

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
4. Cc chc nng ca mt chng trnh bin dch
4.1. Phn tch t vng
- CT ngun l mt dy cc k t.
- Phn tch t vng l phn tch CT ngun
thnh cc t t (Token).
- Cc Token ny s l d liu u vo ca phn
tch c php.
Gio trnh Kin trc my tnh v H
iu hnh
20

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
4. Cc chc nng ca mt chng trnh bin dch
4.2. Phn tch c php
- u vo s l dy cc Token ni nhau bng mt
qui tc no .
- Phn tch xem cc Token c tun theo qui tc
c php ca ngn ng khng
Gio trnh Kin trc my tnh v H
iu hnh
21

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
4. Cc chc nng ca mt chng trnh bin dch
4.3. Phn tch ng ngha
- Kim tra tnh hp l ca cc php ton v cc
php x l
- V d:
Bin phi khai bo trc khi s dng
(Pascal)
Kim tra tnh tng thch kiu d liu ca
bin v biu thc
Gio trnh Kin trc my tnh v H
iu hnh
22

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
4. Cc chc nng ca mt chng trnh bin dch
4.4. X l li
- CT ngun vn c th xy ra li.
- Phn x l li s thng bo li cho NSD
- Li phn no bo phn .
Gio trnh Kin trc my tnh v H
iu hnh
23

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
4. Cc chc nng ca mt chng trnh bin dch
4.4. X l li
- C cc loi li:
Li t vng (trong Pascal s dng bin m
cha khai bo)
Li c php ((a+5; li thiu du ) )
Li ng ngha (x=3.5; nhng khai bo int x)
Li thc hin (php chia 0)
Gio trnh Kin trc my tnh v H
iu hnh
24

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
4. Cc chc nng ca mt chng trnh bin dch
4.5. sinh m trung gian
- Sau giai on phn tch ng ngha
- M trung gian l mt dng trung gian ca CT
ngun c 2 c im:
D c sinh ra
D dch sang ngn ng ch

Gio trnh Kin trc my tnh v H
iu hnh
25

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
4. Cc chc nng ca mt chng trnh bin dch
4.6. Ti u m trung gian
- B bt cc lnh tha.
- Ci tin li m trung gian khi sinh m i
tng th thi gian thc thi m i tng s
ngn hn



Gio trnh Kin trc my tnh v H
iu hnh
26

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
4. Cc chc nng ca mt chng trnh bin dch
4.7. Sinh m i tng
- Giai on cui ca trnh bin dch.
- M i tng c th l m my, hp ng hay
mt ngn ng khc ngn ng ngun.
Cc pha (giai on) c th thc hin song hnh
Mt vi pha c th ghp li thnh lt (chuyn)
Mt lt s c ton b CT ngun hay mt
dng trung gian ca CT ngun, sau ghi kt
qu lt sau c v x l tip.
Gio trnh Kin trc my tnh v H
iu hnh
27

CHNG 1. NHP MN CHNG TRNH DCH

TRNG I HC BCH KHOA NNG
4. Cc chc nng ca mt chng trnh bin dch
V d:
a:=(b+c)*6
5
B PTTV
id1:=(id2+id3)*Num4
B PTCP
n1
id1 := n2
* n3
id2
Num4
id3 +
B PTNN
n1
id1 := n2
* n3
id2
Intoreal(65)
id3 +
B sinh m trung gian
Temp1:=intoreal(65)
Temp2:=id2+id3
Temp3:=temp2*temp1
Id1:=temp3
B ti u sinh m trung gian
Temp1:=id2+id3
Id1:=temp1*65.0
B sinh m i tng
MovF id2, R1
MovF id3, R2
Add R2, R1
Mult #65.0, R1
MovF R1, id1
Gio trnh Kin trc my tnh v H
iu hnh
28
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
- Mc ch
- Ni dung
- Otomat hu hn n nh
- B phn tch t vng
- Bng danh biu
Gio trnh Kin trc my tnh v H
iu hnh
29
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
1. Mc ch
- Chia ct xu vo (CT ngun) thnh dy cc
t t.
- Hai cch ci t
S dng mt lt cho vic phn tch t
vng dy cc token phn tch c
php.
Phn tch t vng dng chung mt lt
vi phn tch c php. Mt ln ch pht
hin 1 token gi l t t tip n.
Gio trnh Kin trc my tnh v H
iu hnh
30
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
2. Ni dung
- c xu vo tng k t mt gom li
thnh token n khi gp k t khng th kt
hp thnh token.
- Lun lun c trc mt k t.
- Loi b cc k t trng v ch thch.
- Chuyn nhng thng tin ca nhng t t
(vn bn, m phn loi) va pht hin cho
b phn tch c php.
- Pht hin li.
Gio trnh Kin trc my tnh v H
iu hnh
31
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
2. Ni dung
- S giao tip gia b phn tch t vng v b
phn tch c php
CT
ngun
B
phn tch
t vng
Gi token
B
phn tch
c php
Yu cu token
Bng
danh biu
Gio trnh Kin trc my tnh v H
iu hnh
32
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
3. Otomat hu hn n nh
3.1. nh ngha: M(, Q, , q0, F)
: b ch vo
Q: tp hu hn cc trng thi
q0 e Q: trng thi u
F _ Q: tp cc trng thi kt thc
: hm chuyn trng thi c dng (q,a)=p
Vi q,p e Q, a e
(q,a)=p: ngha l trng thi q, c a, chuyn
sang trng thi p
Gio trnh Kin trc my tnh v H
iu hnh
33
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
3. Otomat hu hn n nh
3.2. Biu din cc hm chuyn trng thi
Dng bng: s dng ma trn c:
- Ch s hng: trng thi
- Ch s ct: k hiu vo
- Gi tr ti hng q, ct a l trng thi p,
sao cho (q,a)=p
Gio trnh Kin trc my tnh v H
iu hnh
34
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
3. Otomat hu hn n nh
3.2. Biu din cc hm chuyn trng thi
Dng bng:
V d: c hm chuyn ca mt Otomat nh
sau: (1,a)=2, (2,b)=2, (2,c)=2
a b c
1 2
2 2 2
Gio trnh Kin trc my tnh v H
iu hnh
35
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
3. Otomat hu hn n nh
3.2. Biu din cc hm chuyn trng thi
Hnh v:
- mi trng thi qeQ c t trong cc vng
trn.
- Trng thi bt u q0 c thm du > u.
- Trng thi kt thc qeF c t trong vng
trn kp.
- Cc cung ni t trng thi q sang trng thi p
c mang cc nhn ae, c ngha (q,a)=p
Gio trnh Kin trc my tnh v H
iu hnh
36
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
3. Otomat hu hn n nh
3.2. Biu din cc hm chuyn trng thi
Hnh v:
V d: c hm chuyn ca mt Otomat nh
sau: (1,a)=2, (2,b)=2, (2,c)=2
1
2
a
b
c
Gio trnh Kin trc my tnh v H
iu hnh
37
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
3. Otomat hu hn n nh
3.2. Biu din cc hm chuyn trng thi
Nhn xt:
- Biu din hm chuyn trng thi bng
hnh v c u im hn. Trong hnh v ta
xc nh y tt c cc thnh phn
ca Otomat.
- Biu din bng bng xc nh hm
chuyn trng thi, tp cc trng thi, b
ch vo nhng khng phn bit c
trng thi bt u v trng thi kt thc.

Gio trnh Kin trc my tnh v H
iu hnh
38
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
3. Otomat hu hn n nh
3.3. Hot ng ca Otomat
- c cc k hiu ca xu vo t tri sang phi,
bt u t trng thi q0.
- Mi bc c mt k hiu th chuyn sang
trng thi theo . C th c xong hay khng
c xong xu vo.
Gio trnh Kin trc my tnh v H
iu hnh
39
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
3. Otomat hu hn n nh
3.3. Hot ng ca Otomat
- c xong xu vo n mt trng thi peF
th xu vo c on nhn (xu ng).
- c xong xu vo m ri vo trng thi peF
th xu vo khng c on nhn.
- Khng c xong xu vo (do ri vo im
khng xc nh) th xu vo khng c
on nhn.
Gio trnh Kin trc my tnh v H
iu hnh
40
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
3. Otomat hu hn n nh
3.4. V d: Xc nh Otomat on nhn s nh
phn. M(, Q, , q0, F)
: {0, 1, trng}
Q: {0, 1, 2}
q0: 0
F : {2}
: (0,trng)=0, (0,0)=1, (0,1)=1,
(1,0)=1, (1,1)=1, (1,trng)=2
Gio trnh Kin trc my tnh v H
iu hnh
41
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
3. Otomat hu hn n nh
3.4. V d: Xc nh Otomat on nhn s nh
phn
0
1
0|1
0
trng
2
trng
*
Gio trnh Kin trc my tnh v H
iu hnh
42
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
q
4.Lp b phn tch t vng
Ngoi cc hnh qui c ca Otomat thng
thng li c thm:
*
Trng thi kt thc v
tr lui k t va c
Gio trnh Kin trc my tnh v H
iu hnh
43
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
4. Lp b phn tch t vng
4.1. Phng php m phng
- Mi trng thi: tng ng vi mt on
chng trnh
- Ni tip cc trng thi: ni tip 2 on chng
trnh tng ng
-

-

Lnh r nhnh
Lnh lp
Gio trnh Kin trc my tnh v H
iu hnh
44
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
4.Lp b phn tch t vng
4.1. Phng php m phng
Max=10; { di ti a ca 1 danh biu}
Type
Loaikytu=(conso,cham, Ttu, trang, Ccai);
Loaituto=(nguyen,thuc,Toantu,
Danhbieu);
Xau=Array[1..max] of char ;
Var Kytutiep:char;
Procedure Dockytu(var c:char);
{c k t tip, k t ny lun lun c
c trc}
Function LoaiKT(c:char):Loaikytu;
{Cho bit loi ca k t c}
Procedure Baoloi;
{Cho mt thng bo li}

Procedure Tuvung(var ma:Loaituto;var x:xau);
Var i:0..max;
Begin
For i:=1 to max do x[i]:=;
I:=0;
While loaikytu(kytutiep)=trang do
Dockytu(kytutiep);
Case loaikytu(kytutiep) of
Conso: Begin
Repeat I:=i+1;
x[i]:=kytutiep;
Dockytu(kytutiep);
Until Loaikytu(kytutiep)<>conso;
Ma:=nguyen;
Gio trnh Kin trc my tnh v H
iu hnh
45
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
4.Lp b phn tch t vng
4.1. Phng php m phng
If loaikytu(kytutiep)=cham then
Begin Repeat I:=i+1;
x[i]:=kytutiep;
Dockytu(kytutiep);
Until loaikytu(kytutiep)<>Conso
Ma:=thuc;
End;
End;
Cham: Begin Baoloi;
Repeat I:=i+1;
x[i]:=kytutiep;
Dockytu(kytutiep);
Until loaikytu(kytutiep)<>conso;
Ma:=thuc; End;
Ttu: begin I:=i+1; x[i]:=kytutiep;
ma:=toantu; Dockytu(kytutiep);
end;
Ccai: begin
Repeat
If i<max then
Begin I:=i+1;
x[i]:=kytutiep;
end;
Dockytu(kytutiep);
Until (loaikytu(kytutiep)<>Ccai)
and (loaikytu(kytutiep)<>conso);
Ma:=danhbieu;
End;
End; {case} End; {tuvung}
Gio trnh Kin trc my tnh v H
iu hnh
46
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
4.Lp b phn tch t vng
4.1. Phng php iu khin bng bng
Var bangchuyen: array[1..6,loaikytu] of 0..6;
Mng ny c np d liu nh sau:
trang Conso Cham Ttu Ccai
1 1 2 4 5 6
2 0 2 3 0 0
3 0 3 0 0 0
4 0 3 0 0 0
5 0 0 0 0 0
6 0 0 0 0 6
Gio trnh Kin trc my tnh v H
iu hnh
47
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
4. Lp b phn tch t vng
4.1. Phng php iu khin bng bng
Procedure Tuvung(var ma:loaituto; var x:xau);
Begin
trangthai:=1;
trangthaitiep:=bangchuyen[trangthai,
loaikytu(kytutiep)];
i:=0;
Repeat
i:=i+1;
x[i]:=kytutiep;
trangthai:=trangthaitiep;
Dockytu(kytutiep);
trangthaitiep:= bangchuyen[trangthai,

loaikytu(kytutiep)];
Until trangthaitiep=0;
Case trangthai of
2: ma:=nguyen;
3: ma:=thuc;
4: baoloi;
5:ma:=toantu;
6: ma:=danhbieu;
End;{case}
End; {Tuvung}





Gio trnh Kin trc my tnh v H
iu hnh
48
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
5. Bng danh biu
Gm cc token v cc thuc tnh ca token
Ch s Token Tr t vng Cc thuc tnh khc
01
02 Num 45
03 Id A
04 Id B
05
06 Relation <
07 Then Then
08 operator +
Gio trnh Kin trc my tnh v H
iu hnh
49
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
6. Cc cu trc d liu cho bng cc danh biu
- T chc tun t: mng, danh sch lin kt,
danh sch mc ni
- T chc cy tm kim nh phn
Gio trnh Kin trc my tnh v H
iu hnh
50
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
- Mt s vn v ngn ng
- Vn phm phi ng cnh
- i cng v phn tch c php
- Cc phng php phn tch c php
Gio trnh Kin trc my tnh v H
iu hnh
51
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
1. Mt s vn v ngn ng
1.1. Xu
- B ch (bng ch) l tp hp hu hn cc
k hiu
V d:{0,1} b ch gm 2 k hiu 0 v 1
{a,b,c,,z} b ch gm cc k hiu a z
Tp cc ch ci ting vit
Gio trnh Kin trc my tnh v H
iu hnh
52
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
1. Mt s vn v ngn ng
1.1. Xu
- Xu trn b ch V l 1 dy cc k hiu ca V
V d: 0110 l xu trn b ch {0,1}
a, ab, giathanh l xu trn b ch
{a,b,,z}
- di xu l s cc k hiu trong xu
K hiu: di xu x l |x|
V d: |01110|=5
Gio trnh Kin trc my tnh v H
iu hnh
53
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
1. Mt s vn v ngn ng
1.1. Xu
- Xu rng l xu c di bng 0
K hiu: c, |c|=0
- Tp tt c cc xu trn V l V
*
, {c}_V
*

V
+ =
V
*
-{c}
V
*:
tp v hn m c
V d: V={a,b}V
*={
c,a,b,aa,bb,ab,ba,}
Gio trnh Kin trc my tnh v H
iu hnh
54
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
1. Mt s vn v ngn ng
1.1. Xu
- Cc php ton trn xu
Ghp tip: cho 2 xu x,y. Ghp tip ca x, y
l x.y hay xy l 1 xu vit x trc, ri n y
sau ch khng c du cch.
V d: x=01
y=0110
xy=010110
Gio trnh Kin trc my tnh v H
iu hnh
55
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
1. Mt s vn v ngn ng
1.1. Xu
o ngc xu x (x
r
): xu c vit theo th
t ngc li ca xu x
V d: x=0101 x
r
=1010
Ch : c
r
= c, 1
r
=1
- Xu x m x=x
r
th x l xu hnh thp (xu
i xng)
V d: x=0110 x
r
=0110, x: xu hnh thp
Gio trnh Kin trc my tnh v H
iu hnh
56
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
1. Mt s vn v ngn ng
1.2. Ngn ng
- Ngn ng L trn b ch V l tp hp cc
xu trn V, L_V
*
- Cc php ton trn ngn ng
V ngn ng l tp hp nn c cc php ton
tp hp: (giao), (hp), -(hiu, b)
Gio trnh Kin trc my tnh v H
iu hnh
57
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
1. Mt s vn v ngn ng
1.2. Ngn ng
Ghp tip 2 ngn ng
Cho 2 ngn ng L1, L2. Ta gi ghp tip
L1.L2 (L1L2) ca L1 v L2 l mt tp hp
L1L2={xy/(xeL1) v (yeL2)}
x.x=x
2
; x.x.x=x
3
; x
0
=c; x
i
=x
i-1
x
L
0
={c}; L
i
=L
i-1
.L
- L*=L0L
1
L
2
; L
+
=L
1
L
2

Gio trnh Kin trc my tnh v H
iu hnh
58
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
1. Mt s vn v ngn ng
1.3. Biu din ngn ng
Ngn ng n gin
- Phng php lit k: ngn ng c s xu l
hu hn v c th xc nh c.
V d: ngn ng l cc s t nhin nh hn
20 v ln hn 12
L={13, 14, 15, 16, 17, 18, 19}
Gio trnh Kin trc my tnh v H
iu hnh
59
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
1. Mt s vn v ngn ng
1.3. Biu din ngn ng
Ngn ng n gin
- Phng php s dng tn t P(x): ngn ng
m cc xu c cng cc c im.
V d: ngn ng l cc s thc nh hn 5.
L={x/ (xe R) v (x<5)}
Ngn ng phc tp
Vn phm: c ch sn sinh ra ngn ng
Gio trnh Kin trc my tnh v H
iu hnh
60
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
2. Vn phm phi ng cnh
2.1. nh ngha: G=(, , s, p) trong :
: tp hu hn cc k hiu kt thc.
: tp hu hn cc k hiu cha kt thc.
s: k hiu bt u; se
p: tp hu hn cc sn xut c dng
Ao vi Ae v oe()*
Gio trnh Kin trc my tnh v H
iu hnh
61
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
2. Vn phm phi ng cnh
2.2. V d: G=(, , s, p) trong :
: {0,1}
: {S}
s: S
p: S0S | 1S | 0 | 1
Gio trnh Kin trc my tnh v H
iu hnh
62
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
2. Vn phm phi ng cnh
Qui c:
- K hiu kt thc c vit bng ch thng
- K hiu cha kt thc c vit bng ch in
- K hiu cha kt thc nm bn tri ca sn
xut u tin l k hiu bt u.
Gio trnh Kin trc my tnh v H
iu hnh
63
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
2. Vn phm phi ng cnh
2.3. Cc khi nim
Xu (cu) v dng cu:
- o gi l xu khi o e *
- o gi l dng cu khi oe()
*
Gio trnh Kin trc my tnh v H
iu hnh
64
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
2. Vn phm phi ng cnh
2.3. Cc khi nim
Quan h suy dn:
- A c quan h suy dn ra o hay o c suy
dn t A, c ngha l t A p dng cc sn
xut sinh ra c o
- Quan h suy dn trc tip: t A p dng mt
sn xut sinh c o
K hiu: Ao vi Ae v oe()
*

Gio trnh Kin trc my tnh v H
iu hnh
65
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
2. Vn phm phi ng cnh
2.3. Cc khi nim
Quan h suy dn:
- Quan h suy dn nhiu ln: t A p dng
nhiu sn xut mi sinh c o
K hiu: A
+
o vi Ae v oe()*
- di suy dn: s ln p dng cc sn xut
- di ca suy dn trc tip bng 1
Gio trnh Kin trc my tnh v H
iu hnh
66
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
2. Vn phm phi ng cnh
2.3. Cc khi nim
Quan h suy dn:
- Nu lun lun thay th k hiu cha kt
thc bn tri nht gi l suy dn tri.
Tng t ta c suy dn phi
Gio trnh Kin trc my tnh v H
iu hnh
67
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
2. Vn phm phi ng cnh
2.3. Cc khi nim
Cy suy dn: cy tho mn cc iu kin:
- Mi nt c 1 nhn: k hiu kt thc hoc
cha kt thc
- Nhn ca nt gc: k hiu bt u
- Nhn ca nt l: k hiu kt thc
- Nu mt nt c nhn A c cc nt con ca n
t tri sang phi c nhn x1, x2, x3, xn th
Ax1x2x3xn e p
Gio trnh Kin trc my tnh v H
iu hnh
68
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
2. Vn phm phi ng cnh
2.3. Cc khi nim
Cy suy dn
- Suy dn tri to cy suy dn tri.
- Suy dn phi to cy suy dn phi.
- V d: cho vn phm phi ng cnh sau:
EE+E | E*E | (E) | a
V cy suy dn tri, phi sinh xu: a+a*a
(1) (2) (3) (4)
Gio trnh Kin trc my tnh v H
iu hnh
69
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
2. Vn phm phi ng cnh
2.3. Cc khi nim
Vn phm n ngha
Vn phm G=(, , s, p) sn sinh ra ngn
ng L(G)={we
*
}. Ta ni G l vn phm
n ngha (khng nhp nhng) nu vi mi
xu weL(G) ch c mt cy suy dn duy
nht, tri li th G l vn phm nhp nhng.
Gio trnh Kin trc my tnh v H
iu hnh
70
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
2. Vn phm phi ng cnh
2.3. Cc khi nim
Vn phm tng ng
Vn phm G1 v G2 c gi l tng
ng bt k xu x c sinh ra t G1
th G2 cng sinh ra c v ngc li
Gio trnh Kin trc my tnh v H
iu hnh
71
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
2. Vn phm phi ng cnh
2.3. Cc khi nim
Vn phm qui
Cho vn phm PNC G, vi A e m
-A
+
oA| th A gi l k hiu qui, G gi
l vn phm qui. Vi o, | e ()*
- Nu o=c: qui tri
- Nu |=c: qui phi

Gio trnh Kin trc my tnh v H
iu hnh
72
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
2. Vn phm phi ng cnh
2.3. Cc khi nim
Vn phm qui
V d: SS0 | S1 | 0 | 1

(1) (2) (3) (4)
Gio trnh Kin trc my tnh v H
iu hnh
73
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
2. Vn phm phi ng cnh
Bi tp
(1) Xc nh ngn ng c sn sinh bi Vn
phm:
a. SS(S)S | c
b. SaSb | bSa| c
c. S+ S S | * S S | a
d. S0S1 | c

Gio trnh Kin trc my tnh v H
iu hnh
74
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
2. Vn phm phi ng cnh
Bi tp
(2) Xy dng vn phm sn sinh ra ngn ng:
a. S nh phn l
b. S nguyn k0 du
c. S nguyn c du
d. S thc, s nguyn k0 v c du

Gio trnh Kin trc my tnh v H
iu hnh
75
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
3.1. Mc ch
Cho G=(, , s, p)
Mt xu vo xe*

x c vit ng c php
ca vn phm G?
Gio trnh Kin trc my tnh v H
iu hnh
76
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
3.2. Phng php gii quyt
Bt u t S p dng cc sn xut tm x:
PTCP t trn xung
- Nu tm c x: x vit ng c php ca vn
phm G
- Nu k0 tm c x: x vit khng ng c
php ca vn phm G
Gio trnh Kin trc my tnh v H
iu hnh
77
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
3.2. Phng php gii quyt
Bt u t x p dng cc suy dn ngc 1
sn xut thu S: PTCP t di ln
- Nu thu c S: x vit dng c php ca vn
phm G
- Nu k0 thu c S: x vit k0 ng c php
ca vn phm G

Gio trnh Kin trc my tnh v H
iu hnh
78
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
3.2. Phng php gii quyt
V d: Cho vn phm PNC G sau:
SB
BR | (B)
R E=E
E a | b | (E+E)
Xu x: (a=(b+a))
Hi xu x c vit ng c php ca G k0?
(1)
(2) (3)
(4)
(5) (6) (7)
Gio trnh Kin trc my tnh v H
iu hnh
79
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
3.2. Phng php gii quyt
V d:
Phng php t trn xung
S => B => (B) => (R) => (E=E)
=> (E=(E+E)) => (E=(E+a))
=> (E=(b+a)) => (a=(b+a)) :xu x
Vy xu x vit ng c php ca G
(1) (3) (2) (4)
(7)
(5)
(5) (6)
Gio trnh Kin trc my tnh v H
iu hnh
80
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
3.2. Phng php gii quyt
V d:
Phng php t di ln
Stt Dng cu Cn Sx dng
(0) (a=(b+a)) a Ea
(1) (E=(b+a)) b Eb
(2) (E=(E+a)) a Ea
(3) (E=(E+E)) (E+E) E(E+E)
Gio trnh Kin trc my tnh v H
iu hnh
81
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
3.2. Phng php gii quyt
V d:
Phng php t di ln




Vy xu x vit ng c php ca G
(4) (E=E) E=E RE=E
(5) (R) R BR
(6) (B) (B) B(B)
(7) B B SB
(8) S
Gio trnh Kin trc my tnh v H
iu hnh
82
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
3.3. S chung gii thut PTCP t di ln
S

A
|
o
0

o
i-1

o
i

o
k
=x

i
u
i

i

A|
Bit o
i
tm o
i-1
o
i
=
i
u
i

i
e()*; u
i
e*

i
=
i
|
o
k
= x=u
k
;
k
=c
o
0
= S=
0
; u
0
=c
Gio trnh Kin trc my tnh v H
iu hnh
83
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
3.3. S chung gii thut PTCP t di ln
Thut ton:
S dng: 1 stack v 1 Buffer
Khi to: - stack: $
- Buffer: x$
Lp: If (Stack l $S) v (Buffer l $) Then
- x ng c php ca vp G
- Dng vng lp
Gio trnh Kin trc my tnh v H
iu hnh
84
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
3.3. S chung gii thut PTCP t di ln
Thut ton:
Else
If (cn | xut hin nh stack) Then
- Ly cn | ra khi stack
- y A vo stack vi A|

Gio trnh Kin trc my tnh v H
iu hnh
85
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
3.3. S chung gii thut PTCP t di ln
Thut ton:
Else
If (Buffer<>$) Then
D/c k/h nh ca Buffer Stack
Else
-Bo li x khng ng c php VP G
-Dng vng lp
Gio trnh Kin trc my tnh v H
iu hnh
86
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
3.3. S chung gii thut PTCP t di ln
V d: Sif DK then L ;
DK true | false
L write(ID) | read(ID)
ID a | b
Xu x: if true then read(a); c ng c php
vp trn?
Gio trnh Kin trc my tnh v H
iu hnh
87
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
Stt Stack Buffer Hnh ng
(0) $ if true then read(a); $ D/c
(1) $if true then read(a);$ D/c
(2) $if true then read(a);$ R/g DKtrue
(3) $if DK then read(a);$ D/c
(4) $if DK then read(a);$ D/c
3. i cng v phn tch c php
3.3. S chung gii thut PTCP t di ln
V d:
Gio trnh Kin trc my tnh v H
iu hnh
88
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
Stt Stack Buffer Hnh ng
(5) $if DK then read (a);$ D/c
(6) $if DK then read( a);$ D/c
(7) $if DK then read(a );$ R/g IDa
(8) $if DK then read(ID );$ D/c
(9) $if DK then read(ID) ;$ R/g Lread(ID)
3. i cng v phn tch c php
3.3. S chung gii thut PTCP t di ln
V d:
Gio trnh Kin trc my tnh v H
iu hnh
89
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
Stt Stack Buffer Hnh ng
(10) $if DK then L ;$ D/c
(11) $if DK then L; $ R/g Sif DK then L;
(12) $S $ Chp nhn x ng cp G
3. i cng v phn tch c php
3.3. S chung gii thut PTCP t di ln
V d:
Gio trnh Kin trc my tnh v H
iu hnh
90
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
3.4. S chung gii thut PTCP t trn
xung
Bit o
i
tm o
i+1
o
i
= u
i

i
e()*; u
i
e*

i
=A
i

o
k
= x=u
k
;
k
=c
o
0
= S=A=
0
;

0
=u
0
=c
A|
S

o
0

o
i

o
i+1

o
k
=x
A

i

u
i

i

|

i

Gio trnh Kin trc my tnh v H
iu hnh
91
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
3.4. S chung gii thut PTCP t trn xung
Thut ton:
S dng: 1 stack v 1 buffer
Khi to: - stack: S$
- Buffer: x$
Lp: If (Stack l $) v (Buffer l $) Then
- x ng c php ca VP G
Gio trnh Kin trc my tnh v H
iu hnh
92
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
3.4. S chung gii thut PTCP t trn
xung
Thut ton:
- Dng vng lp
Else
If (Ae) xut hin nh Stack Then
Chn sx thch hp A|
Trin khai A bng | nh Stack

Gio trnh Kin trc my tnh v H
iu hnh
93
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
3.4. S chung gii thut PTCP t trn xung
Thut ton:
Else
If (ae) xut hin nh Stack v
Buffer Then
Ly a ra khi Stack v Buffer {i
snh}
Gio trnh Kin trc my tnh v H
iu hnh
94
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
3.4. S chung gii thut PTCP t trn xung
Thut ton:
Else
- Bo li x khng ng c php ca G
- Dng vng lp
Gio trnh Kin trc my tnh v H
iu hnh
95
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
3.4. S chung gii thut PTCP t trn xung
V d: SaA
AbA | c
Xu x: abbc c ng c php ca VP trn ?
Gio trnh Kin trc my tnh v H
iu hnh
96
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
3.4. S chung gii thut PTCP t trn xung
V d:
Stt Stack Buffer Hnh ng
(0) S$ abbc$ Trin khai SaA
(1) aA$ abbc$ i snh
(2) A$ bbc$ Trin khai AbA
(3) bA$ bbc$ i snh
Gio trnh Kin trc my tnh v H
iu hnh
97
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
3.4. S chung gii thut PTCP t trn xung
V d:
Stt Stack Buffer Hnh ng
(4) A$ bc$ Trin khai AbA
(5) bA$ bc$ i snh
(6) A$ c$ Trin khai Ac
(7) c$ c$ i snh
(8) $ $ Chp nhn
Gio trnh Kin trc my tnh v H
iu hnh
98
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
Bi tp:
(1) Cho vn phm G: S var ID:K;T
ID a | b | c
K byte | integer | real
T begin L end.
L read(ID) | write(ID)
Xu x: var a : byte; begin read(a) end.
Xu x c ng cp ca G? ch/m?
Gio trnh Kin trc my tnh v H
iu hnh
99
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
3. i cng v phn tch c php
Bi tp:
(2) Cho vn phm G: S aA | bA
A cA | bA | d
Xu x: abbcbd
Xu x c ng cp ca G? ch/m?
Gio trnh Kin trc my tnh v H
iu hnh
100
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
4. Cc phng php phn tch c php
4.1. T trn xung
- Phng php tin on
- Phng php qui khng quay lui
Gio trnh Kin trc my tnh v H
iu hnh
101
CHNG 3. CC VN C BN V
PHN TCH C PHP
TRNG I HC BCH KHOA NNG
4. Cc phng php phn tch c php
4.2. T di ln
- Phng php u tin ton t
- Phng php th t yu
- Phng php LR(k)
Gio trnh Kin trc my tnh v H
iu hnh
102
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php u tin ton t
Vn phm u tin ton t
Vn phm phi ng cnh tha mn cc K:
- Khng c 2 sn xut c cng v phi
- Khng c v phi l c
- Khng c 2 k hiu cha kt thc ng lin
nhau
Gio trnh Kin trc my tnh v H
iu hnh
103
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php u tin ton t
Mi quan h u tin gia cc k hiu
Vi a, b e c:
- a < b : a km u tin hn b
- a= b: a u tin bng b
- a > b: a u tin hn b
- a v b : khng c quan h u tin



Gio trnh Kin trc my tnh v H
iu hnh
104
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php u tin ton t
Qui tc xc nh mi quan h
(1) - Sx m v phi c dng oab|
hay oaCb|
(2) - Sx m v phi c dng oaB|
m B
+
b hay B
+
Cb
(3) - Sx m v phi c dng oAb|
m A
+
a hay A
+
aC
a=b
.
a<b
.
a>b
.
Gio trnh Kin trc my tnh v H
iu hnh
105
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php u tin ton t
Qui tc xc nh mi quan h
(4) S
+
a hay S
+
aC
hay S
+
a hay S
+
Ca
Vi a, be; A,B,Ce; o, |, e ()*
Lu :- Cn:< >
- a < b
b < c
a >$
.
. .
.
.
a < c
.
(Khng c
T/c bc cu)
Gio trnh Kin trc my tnh v H
iu hnh
106
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php u tin ton t
Thut ton
S dng: 1 stack v 1 Buffer
Khi to: - stack: $
- Buffer: x$
Lp: If (Stack l $S) v (Buffer l $) Then
- x ng c php ca vp G
- Dng vng lp
Gio trnh Kin trc my tnh v H
iu hnh
107
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php u tin ton t
Thut ton
Else {gi s k/h kt thc gn nh stack
nht l a v
buffer l b}
If (a>b) Then
- Tm cn | nh stack(v tr m cn <)
- Ly cn | ra khi stack
- y A vo stack vi A|
.
.
Gio trnh Kin trc my tnh v H
iu hnh
108
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php u tin ton t
Thut ton
Else
If (a<b) or (a=b)Then
D/c b t Buffer Stack
Else
- Bo li x khng ng c php G
- Dng vng lp
.
.
Gio trnh Kin trc my tnh v H
iu hnh
109
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php u tin ton t
V d: Sif DK then L ;
DK true | false
L write(ID) | read(ID)
ID a | b
Xu x: if true then read(a); c ng c php
vp trn?

Gio trnh Kin trc my tnh v H
iu hnh
110
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php u tin ton t
V d:
- Xc nh tt c cc mi quan h
Xt v phi ca tng sn xut
- Phn tch
Gio trnh Kin trc my tnh v H
iu hnh
111
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php u tin ton t
V d:
- Xc nh tt c cc mi quan h
Sx(1):Sif DK then L; if = then (qt1)
Sif DK then L;
DK true | false if < true | false (qt2)
S if DK then L;
DK true | false true | false > then(qt3)
.
.
o a C b |
o a B |
B b b
o A b |
A a a
.
Gio trnh Kin trc my tnh v H
iu hnh
112
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php u tin ton t
V d:
- Xc nh tt c cc mi quan h
Sx(1):Sif DK then L; then = ; (qt1)
Tng t:
then < write | read (qt2)
) > ; (qt3)
.
o a C b |
.
.
Gio trnh Kin trc my tnh v H
iu hnh
113
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php u tin ton t
V d:
- Xc nh tt c cc mi quan h
Sx(4|5): Lwrite(ID) | read(ID)
write | read = ( (qt1)
( = ) (qt1)
( < a | b (qt2)
a |b > ) (qt3)
.
.
.
.
Gio trnh Kin trc my tnh v H
iu hnh
114
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php u tin ton t
V d:
- Xc nh tt c cc mi quan h
S if DK then L ; if | ; > $

a
a
(1)
.
Gio trnh Kin trc my tnh v H
iu hnh
115
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
Stt Stack Buffer Q/h H/ng
(0) $ if true then read(a);$ < D/c
(1) $if true then read(a);$ < D/c
(2) $if true then read(a);$ > R/g DKtrue
(3) $if DK then read(a);$ = D/c
1. Phng php phn tch c php di ln
1.1. Phng php u tin ton t
V d:
.
.
.
.
<
.
Gio trnh Kin trc my tnh v H
iu hnh
116
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
Stt Stack Buffer Q/h H/ng
(4) $if DK then read(a);$ < D/c
(5) $if DK then read (a);$ = D/c
(6) $if DK then read( a);$ < D/c
(7) $if DK then read( a );$ > R/g IDa
1. Phng php phn tch c php di ln
1.1. Phng php u tin ton t
V d:
.
.
.
.
<
.
Gio trnh Kin trc my tnh v H
iu hnh
117
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
Stt Stack Buffer Q/h H/ng
(8) $if DK then read(ID );$ = D/c
(9) $ if DK then
read(ID)
;$ > R/g
Lread(ID)
(10) $ if DK then L ;$ = D/c
(11) $ if DK then L; $ > R/g Sif
DK then L;
(12) $S $ Chp nhn
1. Phng php phn tch c php di ln
1.1. Phng php u tin ton t
V d:
.
.
.
.
<
.
<
.
Gio trnh Kin trc my tnh v H
iu hnh
118
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php u tin ton t
Bi tp:
(1) Cho vn phm G:
S C ; H H type ID=A;B
Cconst ID = N A byte | real
IDa | b | c B var ID : A;
N 5
Xu x: const a=5; type b=byte; var c:real;
Gio trnh Kin trc my tnh v H
iu hnh
119
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php u tin ton t
Bi tp:
(2) Cho vn phm G:
S C ; H H type ID=A var B
Cconst ID = N A byte; | real;
IDa | b | c B ID : A
N 5
Xu x: const a=5; type b=byte; var c:real;
Gio trnh Kin trc my tnh v H
iu hnh
120
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php u tin ton t
Bi tp:
(2) Cc mi quan h:
5 | = > ; ; < type ;|var| : |const > $
const= = const <a|b|c a|b|c> = =<5
type= = type< a|b|c = = var
a|b|c> = =< byte|real ;>var var< :|a|b|c
byte|real=; a|b|c> : :< byte|real
. .
.
.
. .
.
.
.
. .
. .
. .
.
.
Gio trnh Kin trc my tnh v H
iu hnh
121
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.2. Phng php th t yu
Cu to:
Stack
$ x1 x2
xi

$ y1 y2
yi
Buffer
Kt qu
B phn
tch
Bng S_R
Gio trnh Kin trc my tnh v H
iu hnh
122
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.2. Phng php th t yu
Cu to:
- Xi e ()
- yi e
- S_R: ma trn c:
Ch s hng xi e ()
Ch s ct yi e
Gio trnh Kin trc my tnh v H
iu hnh
123
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.2. Phng php th t yu
Cu to:
S_R[xi,yi]: c cc gi tr
S_R[xi,yi]=S
S_R[xi,yi]=R
S_R[xi,yi]=R*
S_R[xi,yi]=rng
Gio trnh Kin trc my tnh v H
iu hnh
124
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.2. Phng php th t yu
Hot ng:
- Ti mt thi im no k/h nh ca
stack l Xie(), nh buffer l yie. B
phn tch s xc nh hnh ng thng qua
bng S_R:

Gio trnh Kin trc my tnh v H
iu hnh
125
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.2. Phng php th t yu
Hot ng:
S_R[xi,yi]: xc nh hnh ng
S_R[xi,yi]=S: dch chuyn k/h nh
buffer stack
S_R[xi,yi]=R: rt gn
S_R[xi,yi]=R*: chp nhn x ng cp G
S_R[xi,yi]=rng: bo li x k0 ng cp G
Gio trnh Kin trc my tnh v H
iu hnh
126
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.2. Phng php th t yu
Thut ton
S dng: 1 stack v 1 Buffer
Khi to: - stack: $
- Buffer: x$
Lp:
{g/s k/h nh stack l x, nh buffer
l y}
Gio trnh Kin trc my tnh v H
iu hnh
127
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php th t yu
Thut ton
If (S_R[x,y]=R*) Then
- x ng c php ca vp G
- Dng vng lp
Else If (S_R[x,y]=rng) Then
Bo li v dng vng lp
Gio trnh Kin trc my tnh v H
iu hnh
128
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php th t yu
Thut ton
Else If (S_R[x,y]=S) then
D/c y t buffer stack
Else {S_R[x,y]=R}
If (C v phi | di nht nh stack) then
- Ly | ra khi stack
- y A vo stack vi A|
Gio trnh Kin trc my tnh v H
iu hnh
129
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.2. Phng php th t yu
Thut ton
Else
- Bo li v dng vng lp
Gio trnh Kin trc my tnh v H
iu hnh
130
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.2. Phng php th t yu
V d: Cho G : Sid=A
AA+B | B
BB*C | C
Cid | (A)
Xu x: id=id+id*id
Gio trnh Kin trc my tnh v H
iu hnh
131
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
Bng S_R
id * + ( ) = $
S R*
A S S R
B S R R R
C R R R R
id R R R S R
* S S
+ S S
( S S
) R R R R
= S S
$ S
Gio trnh Kin trc my tnh v H
iu hnh
132
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php th t yu
Qui tc xc nh mi quan h
(1) - Sx m v phi c dng oxy|
- Nu ye th: x = y
- Nu ye th: x < y
Vi xe(); o,|e()*
.
.
Gio trnh Kin trc my tnh v H
iu hnh
133
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php th t yu
Qui tc xc nh mi quan h
(2) - Sx m v phi c dng oxA|
m A
+
y th: x < y
Vi x,ye(); Ae; o,|,e()*
(3) - Sx m v phi c dng oAB|
m A
+
x v B
+
yu th: x > y
Vi x,y,Be(); Ae; o,|,,ue()*
(Nu Be th y chnh l B)
.
.
Gio trnh Kin trc my tnh v H
iu hnh
134
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.1. Phng php th t yu
Qui tc xc nh mi quan h
(4) S+x hay S+x th x > $
Vi xe () ; e ()*
.
Gio trnh Kin trc my tnh v H
iu hnh
135
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.2. Phng php th t yu
Xy dng bng S_R
- X < Y hay X=Y th: S_R[X,Y]=S
- X > Y th: S_R[X,Y]=R
- Stack l $S v Buffer l $ th: S_R[X,Y]=R*
- X v Y khng c mi quan h th:
S_R[X,Y]=rng
.
.
.
Gio trnh Kin trc my tnh v H
iu hnh
136
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.2. Phng php th t yu
V d: cho G nh sau:
SA C D A const ID=N;
C var ID: K; D begin L end.
L write(ID) |read(ID) ID a|b
N5 Kbyte|real
Xu x: const a=5;var b:byte;begin read(b) end.
Gio trnh Kin trc my tnh v H
iu hnh
137
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.2. Phng php th t yu
Cc mi quan h: begin<write|read )>end
A < C A < var ; > var C < D
C< begin .|D > $ const|A>$ ; > begin
var < ID ID = : : < K K = ;
var < a|b a|b > : :<byte|real byte|real>;
write|read = ( ( < ID ID = )
( < a|b a|b > ) const <ID ID= = = < N
N=; const <a|b a|b > = = < 5
5 > ; begin<L L=end end=.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Gio trnh Kin trc my tnh v H
iu hnh
138
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.2. Phng php th t yu
Vn phm th t yu
Vn phm phi ng cnh tha mn cc K:
- Khng c 2 sn xut c cng v phi
- Khng c v phi l c
- Khng c phn t S_R[x,y] c c tr S v R
- Nu -Ax1x2xn v Bxixi+1xn th
khng - xi-1<=B
Gio trnh Kin trc my tnh v H
iu hnh
139
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.2. Phng php th t yu
Vn phm th t yu
Nu - xi-1<=B th c ngha - Cx1x2xi-
1B v nh vy thu gn x1x2xn, th s
thu gn xixi+1xn v B ri mi thu gn
x1x2xi-1B v C. Nh vy mu thun vi
tnh cht lun lun thay th v phi di nht.

Gio trnh Kin trc my tnh v H
iu hnh
140
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
Cu to:
Kt qu
$ a0 a1
ai
Buffer
B phn
tch
Stack
$ S0 x0
Si

Si-1 Xi-1
Bng SLR
Action Goto
Gio trnh Kin trc my tnh v H
iu hnh
141
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
Cu to:
- Stack: $s
0
x
0
s
1
x
1
s
i-1
x
i-1
s
i

s
t
: trng thi; x
t
e()

- Buffer: a
i
a
i-1
a
0
$ ; vi a
t
e
- Bng SLR gm 2 phn: action v goto
Ch s hng: trng thi S
t

Gio trnh Kin trc my tnh v H
iu hnh
142
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
Cu to:
Ch s ct
Phn action: a
i
e
Phn goto: Xe
Action[S
i
,a
i
]=Shift j (Sj)
Action[S
i
,a
i
]=Reduce Ao (RJ)
Gio trnh Kin trc my tnh v H
iu hnh
143
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
Cu to:
Action[S
i
,a
i
]=Accept
Action[S
i
,a
i
]=rng
Goto[S
i
,X]=j


Gio trnh Kin trc my tnh v H
iu hnh
144
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
Hot ng:
Ti mt thi im b phn tch c trng
thi S
i
nh stack v k hiu vo a
i
nh
buffer v tra trong bng SLR phn Action
mt gi tr. Nu:
- Action[S
i
,a
i
]=Shift j (Sj)
D/c a
i
t Buffer Stack
y j vo stack
Gio trnh Kin trc my tnh v H
iu hnh
145
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
Hot ng:
- Action[S
i
,a
i
]=Reduce Ao (RJ)
Ly 2*r phn t ra khi stack. Vi r=|o|
y A vo stack
y j vo stack vi j=goto[S
i-r
,A]
Gio trnh Kin trc my tnh v H
iu hnh
146
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
Hot ng:
- Action[S
i
,a
i
]=Accept
Xu x ng cp ca vpG
- Action[S
i
,a
i
]=rng
Bo li x khng c php ca vpG

Gio trnh Kin trc my tnh v H
iu hnh
147
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
Thut ton:
S dng: 1 stack, 1 buffer, bng SLR
Khi to: - stack: $0
- Buffer: x$
Lp: {g/s nh stack l S
i
, nh buffer l a}
If (Action[S
i
,a]=accept) then
- x ng cp v dng vng lp
Gio trnh Kin trc my tnh v H
iu hnh
148
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
Thut ton:
Else If (Action[S
i
,a]=Sj) then
- D/c a t buffer stack
- y j vo stack
Else IF (Action[S
i
,a]=Reduce Ao) then
- Ly 2*r phn t ra khi stack
Gio trnh Kin trc my tnh v H
iu hnh
149
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
Thut ton:
- y A vo stack
- y j vo stack. Vi j=goto[S
i-r
,A]
Else {Action[S
i
,a]=rng}
- Bo li x khng ng cp ca G
- Dng vng lp
Gio trnh Kin trc my tnh v H
iu hnh
150
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
V d: Cho vp G
E E + T | T
T T * F | F
F (E) | id
Xu x: id*(id+id)
Gio trnh Kin trc my tnh v H
iu hnh
151
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
T/
thi
Action Goto
id + * ( ) $ E T F
0 S5 S4 1 2 3
1 S6 Accept
2 R2 S7 R2 R2
3 R4 R4 R4 R4
4 S5 S4 8 2 3
5 R6 R6 R6 R6
6 S5 S4 9 3
Gio trnh Kin trc my tnh v H
iu hnh
152
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
T/
thi
Action Goto
id + * ( ) $ E T F
7 S5 S4 10
8 S6 S11
9 R1 S7 R1 R1
10 R3 R3 R3 R3
11 R5 R5 R5 R5
Gio trnh Kin trc my tnh v H
iu hnh
153
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
Xy dng bng SLR
- Vn phm gia t G
G=G {SS}
V d: G: S 0S | 1S
G: S S
S 0S | 1S
Gio trnh Kin trc my tnh v H
iu hnh
154
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
Xy dng bng SLR
- Thc th: Sx thm du chm bt k v tr
ca v phi.
V d: A xyz
th A .xyz Ax.yz Axy.z
A xyz. l cc thc th
Gio trnh Kin trc my tnh v H
iu hnh
155
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
Xy dng bng SLR
- Hm tnh bao ng Closure(I
i
): 2 qui tc
(1) a tt c cc thc th trong I
i
vo closure(I
i
)
(2) C mi thc th c dng Ao.B|eclosure(I
i
)
m B th thm B. vo closure(I
i
)
vi B. e closure(I
i
)
Gio trnh Kin trc my tnh v H
iu hnh
156
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
Xy dng bng SLR
- Hm tnh goto
Goto(I
i
,x)=closure({Aox.|})
vi {Ao.x|} c I
i
; xe()
Gio trnh Kin trc my tnh v H
iu hnh
157
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
Xy dng bng SLR
- Tp thc th LR(0)
I
0
=closure({S.S})
- Tnh tt c cc goto(I
i
,x) ca tt c cc tp
thc th ta s c tp LR(0).
- Tnh ht goto(I
i
,x) m khng sinh c I
i+1

th dng.
Gio trnh Kin trc my tnh v H
iu hnh
158
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
Xy dng bng SLR
- Qui tc xc nh hnh ng
(1) - Ao.a| e I
i
v goto(I
i
,a)=I
j
vi a e
th: Action[i,a]= Sj
(2) - Ao.X| e I
i
v goto(I
i
,X)=I
j
vi X e
th: goto[i,X]= j

Gio trnh Kin trc my tnh v H
iu hnh
159
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
Xy dng bng SLR
- Qui tc xc nh hnh ng
(3) - SS. e I
i
th: Action[i,$]= accept
(4) - Ao. e I
i
th Action[i,a]= Reduce Ao
vi ae Follow(A); A<>S
- Qui tc xc nh Follow
Follow(A)={(te|S
+
oAt|)(t=$|S
+
oA)}
Gio trnh Kin trc my tnh v H
iu hnh
160
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
V d: Cho vp G
E E + T | T
T T * F | F
F (E) | id
Xy dng bng SLR cho VP G
Gio trnh Kin trc my tnh v H
iu hnh
161
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
V d:
- Xc nh G
- To tp thc th LR(0)
- Xc nh cc hnh ng
Gio trnh Kin trc my tnh v H
iu hnh
162
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
V d:
- VP gia t G
E E
E E + T | T
T T * F | F
F (E) | id
Gio trnh Kin trc my tnh v H
iu hnh
163
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
V d:
- To tp thc th LR(0)
I
0
=closure({E.E})
E.E
E.E+T
E.T
T.T*F
T.F
F.(E)
F.id
I
1
=goto(I
0
,E)
EE.
EE.+T

Gio trnh Kin trc my tnh v H
iu hnh
164
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
V d:
- Xc nh cc hnh ng
Gio trnh Kin trc my tnh v H
iu hnh
165
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
Bi tp:
(1) cho VPG: A A or B | B
B B and C | C
C not C | (A) | true | false
Hi xu x: true and false or (not true) c c
sinh ra t VPG? c/m bng PP SLR

Gio trnh Kin trc my tnh v H
iu hnh
166
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Simple LR (SLR)
Bi tp:
(2) Cho VPG: S AS| b
A SA| a
Xy dng bng SLR cho VP G?
Gio trnh Kin trc my tnh v H
iu hnh
167
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.4. Phng php Canonical LR (LR(1))
- Trong PP SLR xung t ch xy ra nhng
thc th Ao .
- Khi xy ra xung t ta c th s dng PP
Canonical LR

Gio trnh Kin trc my tnh v H
iu hnh
168
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.4. Phng php Canonical LR (LR(1))
Cu to: nh SLR
Hot ng: nh SLR
Thut ton: nh SLR
Xy dng bng Canonical LR
Gio trnh Kin trc my tnh v H
iu hnh
169
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.4. Phng php Canonical LR (LR(1))
Xy dng bng Canonical LR
- Vn phm gia t: nh SLR
- Thc th: gm c 2 phn
+ Phn nhn: ging thc th trong SLR
+ K hiu nhn trc: ae
V d: AX.YZ, a
Gio trnh Kin trc my tnh v H
iu hnh
170
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.4. Phng php Canonical LR (LR(1))
Xy dng bng Canonical LR
- Hm tnh bao ng closure(I
i
): 2 qui tc
(1) a tt c cc thc th trong I
i
vo closure(I
i
)
(2) C thc th [Ao.B|,a]eclosure(I
i
) m B
th thm [B., b] vo closure(I
i
)
vi [B., b]eclosure(I
i
) v befirst(|a)
Gio trnh Kin trc my tnh v H
iu hnh
171
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.4. Phng php Canonical LR (LR(1))
Xy dng bng Canonical LR
- Qui tc xc nh First(o)
First(o)={(ae|o
+
a|)(a=$|o
+
c )}
- Hm tnh goto(I
i
,X)
Goto(I
i
,X)=Closure({AoX.|, a}) vi
{Ao.X|, a}c I
i
v Xe()
- I
0
=closure({S.S, $})
Gio trnh Kin trc my tnh v H
iu hnh
172
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Canonical LR (LR(1))
Xy dng bng Canonical LR
- Qui tc xc nh hnh ng
(1) - [Ao.a|,b]e I
i
v goto(I
i
,a)=I
j
vi a e
th: Action[i,a]= Sj
(2) - [Ao.X|,b] e I
i
v goto(I
i
,X)=I
j
vi X e
th: goto[i,X]= j

Gio trnh Kin trc my tnh v H
iu hnh
173
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Canonical LR (LR(1))
Xy dng bng Canonical LR
- Qui tc xc nh hnh ng
(3) - [SS.,$] e I
i
th: Action[i,$]= accept
(4) - [Ao.,a]eI
i
th Action[i,a]= Reduce Ao
vi A<>S
Gio trnh Kin trc my tnh v H
iu hnh
174
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.3. Phng php Canonical LR (LR(1))
Xy dng bng Canonical LR
- Trn cc tp thc th
Vi cc tp thc th c chung phn nhn,
khc nhau phn k hiu nhn trc, ta c
th trn chng li vi nhau c mt tp
thc th mi c:
+ phn nhn: phn ging nhau
+ k hiu nhn trc: hp cc k/h nhn trc
Gio trnh Kin trc my tnh v H
iu hnh
175
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.4. Phng php Canonical LR (LR(1))
Xy dng bng Canonical LR
V d: S CC
C cC | d
Gio trnh Kin trc my tnh v H
iu hnh
176
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
1. Phng php phn tch c php di ln
1.4. Phng php Canonical LR (LR(1))
Bi tp: xy dng bng Canonical LR
SAS | b
A SA | a
Gio trnh Kin trc my tnh v H
iu hnh
177
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
- PTCP t trn xung: thay v tri bng v
phi. Mt vn t ra khi c 2 sx c v tri
ging nhau th chn sx no?
- Chn mt sx nu khng c th quay lui,
chn sx khc
- Hn ch vn phm.

Gio trnh Kin trc my tnh v H
iu hnh
178
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.1. Vn phm LL(1)
- VP cho php PTCP bng cch trin khai dn
dn suy dn tri t trn xung.
- Thm d xu vo t tri sang phi
- Nhn trc 1 k hiu

Gio trnh Kin trc my tnh v H
iu hnh
179
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.1. Vn phm LL(1)
nh ngha:
VP PNC G=(, , S, p) c gi l LL(1)
nu n tha mn 2 iu kin sau:
(1) sx c dng A|1 | |2 | |3 | | |n th phi
c first(|i) first(|j) = | vi i=j
(2) Ae m A
+
c th phi c:
first(A) follow(A)=|

Gio trnh Kin trc my tnh v H
iu hnh
180
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.1. Vn phm LL(1)
V d:
(1) SA | B
AaA | b
BaB | c
Xt: SA | B First(A)={a,b} First(B)={a,c}
First(A) first(B)={a}=| (vi phm K1)
nn vp trn khng phi l LL(1)
Gio trnh Kin trc my tnh v H
iu hnh
181
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.1. Vn phm LL(1)
V d:
(2) AAa
Aa | c
Xt: Ae m A
+
c c:
first(A)={a,$}, follow(A)={a}
nn first(A)follow(A)={a}=| (vi pham k2)
VP trn khng phi l LL(1)
Gio trnh Kin trc my tnh v H
iu hnh
182
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.2. Vi php bin i v VP LL(1)
Kh qui tri:
Dng (1): AAo | |
Dng (2): AAo | c
Xt (1) c: first(Ao)=first(|)
nn first(Ao)first(|)=first(|)=|
(vi pham k1)
VP qui tri khng phi l LL(1)
Gio trnh Kin trc my tnh v H
iu hnh
183
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.2. Vi php bin i v VP LL(1)
Kh qui tri:
Dng (1): AAo | |
Dng (2): AAo | c
Xt (2): Ae m A+ c c:
first(A)=first(Ao)=first(o),
follow(A)=first(o) nn
first(A)follow(A)=first(o)=| (vi pham k2)
VP qui tri khng phi l LL(1)
Gio trnh Kin trc my tnh v H
iu hnh
184
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.2. Vi php bin i v VP LL(1)
Kh qui tri:
Dng (1): AAo | |
Thay bi: A| A
AoA| c
A
A
A
o
o
|
A
A
A
|
o
o
A
c
Gio trnh Kin trc my tnh v H
iu hnh
185
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.2. Vi php bin i v VP LL(1)
Kh qui tri:
Dng (2): AAo | c
Thay bi: AoA | c
A
A
A
o
o
c
A
A
A
o
o
c
Gio trnh Kin trc my tnh v H
iu hnh
186
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.2. Vi php bin i v VP LL(1)
t tha s chung:
Dng (3): Ao| | o
C: first(o|)=first(o)=first(o)
nn first(o|)first(o)=first(o)=|
(vi phm k1)
Gio trnh Kin trc my tnh v H
iu hnh
187
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.2. Vi php bin i v VP LL(1)
t tha s chung:
Dng (3): Ao| | o
Thay bi: Ao A
A| |
Gio trnh Kin trc my tnh v H
iu hnh
188
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.2. Vi php bin i v VP LL(1)
Bi tp: Bin i cc VP sau thnh LL(1)
(1) E E + T | T
T T * F | F
F (E) | id
(2) A A T | T
T 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Gio trnh Kin trc my tnh v H
iu hnh
189
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.2. Vi php bin i v VP LL(1)
Bi tp: Bin i cc VP sau thnh LL(1)
(3) AA S | A C | C
C a
S 0
(4) Xy dng VP LL(1) sn sinh ra danh nh
ca mt ngn ng.

Gio trnh Kin trc my tnh v H
iu hnh
190
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.2. Vi php bin i v VP LL(1)
Bi tp: gii
(1) E TE
E+TE | c
T FT
T*FT | c
F(E) | id
Gio trnh Kin trc my tnh v H
iu hnh
191
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.2. Vi php bin i v VP LL(1)
Bi tp: gii
(2) A AT | T ATA
T 0 | .. | 9 AA |c
T 0|..|9
Gio trnh Kin trc my tnh v H
iu hnh
192
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.2. Vi php bin i v VP LL(1)
Bi tp: gii
(3) Sx(1) v (2) bin i: A AA
AS | C
AAA|C ACA ACA
AS | C AAA|c ASA C a
AS|C ACA|c S 0
Ca Ca
S0 S0
Gio trnh Kin trc my tnh v H
iu hnh
193
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.2. Vi php bin i v VP LL(1)
Bi tp: gii
(4) ID ID CC | ID CS |ID_ | CC| _ID|
CC a | b
CS 0 | 1
Gio trnh Kin trc my tnh v H
iu hnh
194
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.2. Vi php bin i v VP LL(1)
Bi tp: gii
(4) ACC A | _B
BCCA | CS A| _B
ACCA| CSA | _A| c
CCa
CS0
Gio trnh Kin trc my tnh v H
iu hnh
195
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.3. Phng php tin on
Cu to:
xi x2 x1 $ ai a2 a1 $
B phn tch
Bng tin on M
Kt qu
Stack
Buffer
Gio trnh Kin trc my tnh v H
iu hnh
196
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.3. Phng php tin on
Cu to:
- Stack: x
i
x
i-1
x
0
$ vi x
t
e ()
- Buffer: a
i
a
i-1
a
0
$ vi a
t
e
- Bng tin on M:
Ch s hng: A e
Ch s ct: a e
M[A,a]: Ao hoc rng
Gio trnh Kin trc my tnh v H
iu hnh
197
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.3. Phng php tin on
Hot ng: Ti mt thi im nu:
- stack l $ v buffer l $: x ng CP VPG
- nh stack v buffer ae: i snh a
- nh stack l Ae th nu:
M[A,a]=Ao : trin khai Ao nh stack
M[A,a]=rng: xu x khng ng CP VPG
Gio trnh Kin trc my tnh v H
iu hnh
198
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.3. Phng php tin on
Gii thut:
S dng: 1 stack v 1 buffer
Khi to: - stack l S$
- Buffer l x$
Lp:
If (stack l $) v (buffer l $) then
x ng cp v dng vng lp
Gio trnh Kin trc my tnh v H
iu hnh
199
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.3. Phng php tin on
Gii thut:
Else if (ae nh stack v buffer) then
i snh a nh stack v buffer
Else if (Ae nh stack)
v (a e nh buffer) then
if (M[A,a]=Ao) then
trin khai A nh stack
Else x k0 ng CP VPG, dng vng lp
Gio trnh Kin trc my tnh v H
iu hnh
200
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.3. Phng php tin on
V d: SaA
AbA | c
Xu x: abbc c ng CP ca VP trn ?

Gio trnh Kin trc my tnh v H
iu hnh
201
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.3. Phng php tin on
V d:
a b c $
S SaA
A AbA Ac
Gio trnh Kin trc my tnh v H
iu hnh
202
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.3. Phng php tin on
V d:
STT Stack Buffer Hnh ng
(0) S$ abbc$ Trin khai SaA
(1) aA$ abbc$ i snh
(2) A$ bbc$ Trin khai AbA
(3) bA$ bbc$ i snh
(4) A$ bc$ Trin khai AbA
Gio trnh Kin trc my tnh v H
iu hnh
203
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.3. Phng php tin on
V d:
STT Stack Buffer Hnh ng
(5) bA$ bc$ i snh
(6) A$ c$ Trin khai Ac
(7) c$ c$ i snh
(8) $ $ Chp nhn x ng cp
Gio trnh Kin trc my tnh v H
iu hnh
204
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.3. Phng php tin on
Xy dng bng tin on M: 2 qui tc
(1) sx Ao th M[A,a]=Ao vi aefirst(o)
o = c
(2) sx Ac th M[A,a]=Ac vi a efollow(A)
Gio trnh Kin trc my tnh v H
iu hnh
205
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.3. Phng php tin on
Xy dng bng tin on M:
V d: xy dng bng tin on M cho vp:
E TE
E+TE | c
T FT
T*FT | c
F(E) | id
(1)
(2) (3)
(4)
(5) (6)
(7) (8)
Gio trnh Kin trc my tnh v H
iu hnh
206
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.4. Phng php qui khng quay lui
- V mt nguyn l ging pp tin on.
- Khc v lp trnh: khng tra bng tin on
M m m phng trc tip.
- Thay stack bng s qui trong chng
trnh.
- Mt k/h cha kt thc: bdin bng 1 biu
c php
- Mt biu c php: bdin bng 1 CT con
Gio trnh Kin trc my tnh v H
iu hnh
207
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.4. Phng php qui khng quay lui
Biu c php:
K/h kt thc t:
K/h cha kt thc t:
- V d: ETE
E:
E T
Gio trnh Kin trc my tnh v H
iu hnh
208
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.4. Phng php qui khng quay lui
CT con biu din cho biu c php:
(1) S kt tip ca cc nt: s kt tip ca cc
on ctcon
(2) S r nhnh to thnh cu trc chn
A:
|
1

|
2

|
3

Gio trnh Kin trc my tnh v H
iu hnh
209
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.4. Phng php qui khng quay lui
CT con biu din cho biu c php:
(3) Lp kim tra k sau

(4) Lp kim tra k trc
(5) Nu k/h tip=a th
ck t tip theo
Ngc li bo li
|
|
a
Gio trnh Kin trc my tnh v H
iu hnh
210
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.4. Phng php qui khng quay lui
CT con biu din cho biu c php:
(6) Gi ctcon B
B
Gio trnh Kin trc my tnh v H
iu hnh
211
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.4. Phng php qui khng quay lui
Thut ton:
k/htiep: k hiu kt thc;
function Dockh:k hiu kt thc; {c k/hiu
tip trong x}
Procedure Baoloi; {a thng bo li}
Procedure |
I
;{cc Ctcon biu din Ae}

Gio trnh Kin trc my tnh v H
iu hnh
212
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.4. Phng php qui khng quay lui
Thut ton:
Procedure PTCP;
Begin k/htiep:=Dockh;
S;
if k/htiep=$ then x ng CP
else baoloi;
End.
Gio trnh Kin trc my tnh v H
iu hnh
213
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
2. Phng php phn tch c php trn xung
2.4. Phng php qui khng quay lui
V d:

You might also like