You are on page 1of 268

1

I HC NNG
TRNG I HC BCH KHOA
KHOA CNG NGH THNG TIN
CHNG TRNH DCH
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
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
TRNG I HC BCH KHOA NNG
Gii thiu
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
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
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)
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
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
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
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
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
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:*, /, +, -,
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,
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>

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
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.
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
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
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.
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
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
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 .
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 (int x=3.5; )
Li thc hin (php chia 0)
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

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



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.
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
B PTTV
id1:=(id2+id3)*Num4
B PTCP
n1
id1 := n2
* n3
id2
Num4
id3 +
B PTNN
n1
id1 := n2
* n3
id2
Intoreal(6)
id3 +
B sinh m trung gian
Temp1:=intoreal(6)
Temp2:=id2+id3
Temp3:=temp2*temp1
Id1:=temp3
B ti u sinh m trung gian
Temp1:=id2+id3
Id1:=temp1*6.0
B sinh m i tng
MovF id2, R1
MovF id3, R2
Add R2, R1
Mult #6.0, R1
MovF R1, id1
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
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.
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 k t trng v xc nh 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.
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
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
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
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
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
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
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.
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.
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.
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
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
*
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
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
44
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
4.Lp b phn tch t vng
>
0 1
=
3
>
khac
2
4
*
5
=
7
khac
6
8
*
<
<
9
! =
10
11
khac
*
12
= =
13
14
khac
*
1
5
+
1
6
=
1
8
+
khac
1
7
1
9
*
2
0
=
2
2
khac
2
1
2
3
*
-
-
24
* =
25
26
khac
*
27
/ =
28
29
khac
*
%
30
ss ln hn bng
dich phai
ss ln hn
ss nho hn bng
dich trai
ss nho hn
ss khac
phu inh
ss khng bng
gan
cng bng
tng 1
cng
tr bng
giam 1
tr
nhn bng
nhn
chia bng
chia
chia ly d
Ss bng
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
const int ERROR_STATE=100;
typedef int state;// kieu cac trang thai
typedef unsigned char *attri;// kieu cua thuoc tinh
typedef unsigned char *token; //kieu cua tu to
unsigned char *x;//xau vao x
unsigned int i=0;// vi tri cua ky tu doc trong xau x
unsigned char readchar(unsigned char *x, unsigned int i){
//tra ve ky tu tiep theo
if(i<strlen(x)) return (*(x+i));
else return ('\0'); }
46
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
attri attribute(state s) {
// tra ve thuoc tinh tuong ung voi trang thai ket thuc
char *ch;
switch(s){
case 2: strcpy(ch,"so sanh lon hon bang");break;
case 3: strcpy(ch,"dich phai"); break;
case 4: strcpy(ch,"so sanh lon hon"); break;
case 6: strcpy(ch,"so sanh nho hon bang");break;
case 7: strcpy(ch,"dich trai"); break;
case 8: strcpy(ch,"so sanh nho hon"); break;
47
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
case 10: strcpy(ch,"so sanh khong bang"); break;
case 11: strcpy(ch,"phu dinh"); break;
case 13: strcpy(ch,"so sanh bang"); break;
case 14: strcpy(ch,"gan"); break;
case 17: strcpy(ch,"cong bang"); break;
case 18: strcpy(ch,"tang 1"); break;
case 19: strcpy(ch,"cong"); break;
case 21: strcpy(ch,"tru bang"); break;
case 22: strcpy(ch,"giam 1"); break;
case 23: strcpy(ch,"tru"); break;
48
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
case 25: strcpy(ch,"nhan bang"); break;
case 26: strcpy(ch,"nhan"); break;
case 28: strcpy(ch,"chia bang"); break;
case 29: strcpy(ch,"chia"); break;
case 30: strcpy(ch,"chia lay du"); break;
default: strcpy(ch,"token ko duoc doan nhan(tt
ko dung \0");
}
return ch;
}
49
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
int nostar_end_state(state s){
//kiem tra trang thai s co phai la trang thai ket thuc khong sao ?
switch(s){
case 2:
case 3:
case 6:
case 7:
case 10:
case 13:
case 17:
50
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
case 18:
case 21:
case 22:
case 25:
case 28:
case 30: return 1;
default: return 0;
}
}
51
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
int star_end_state(state s){
//kiem tra trang thai s co phai la trang thai ket thuc sao ?
switch(s){
case 4:
case 8:
case 11:
case 14:
case 19:
case 23:
52
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
case 26:
case 29: return 1;
default: return 0;
}
}
53
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
state start_state_otherbrand(state s){
state start;
switch(s){
case 0: start=15; break;
case 15: start=ERROR_STATE;
}
return start;
}
54
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
void catchar_in_token (unsigned char c, token tk){
// ghep them ky tu c vao cho tu to tk
*(tk+strlen(tk))=c;
*(tk+strlen(tk)+1)='\0';
}
int start_state(state s){
if ((s==0) || (s==15)) return 1; return 0;
}
55
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
token search_token (unsigned int *i, attri tt){
// tra ve tri tu vung cua tu to bdau tu vi tri i, thuoc tinh tra ve cho tt
token tk;
state s=0;
int stop=0;
unsigned char c;
do {
c=readchar(x,*i);
*i=*i+1;
} while ((c==' ')&&(*i<strlen(x)));
56
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
while (*i<strlen(x)&&(!stop)){
switch(s){
case 0: if (c=='>') s=1;
else if (c=='<') s=5;
else if (c=='!') s=9;
else if (c=='=') s=12;
else s=start_state_otherbrand(s);
break;

57
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
case 1: if (c=='=') s=2;
else if (c=='>') s=3;
else s=4;
break;
case 5: if (c=='=') s=6;
else if (c=='<') s=7;
else s=8;
break;

58
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
case 9: if (c=='=') s=10;
else s=11;
break;
case 12: if (c=='=') s=13;
else s=14;
break;

59
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
case 15: if (c=='+') s=16;
else if (c=='-') s=20;
else if (c=='*') s=24;
else if (c=='/') s=27;
else if (c=='%') s=30;
else s=start_state_otherbrand(s);
break;

60
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
case 16: if (c=='=') s=17;
else if (c=='+') s=18;
else s=19;
break;
case 20: if (c=='=') s=21;
else if (c=='-') s=22;
else s=23;
break;

61
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
case 24: if (c=='=') s=25;
else s=26;
break;
case 27: if (c=='=') s=28;
else s=29;
break;
default: stop=1;
}

62
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 (s==ERROR_STATE){
stop=1;
printf("loi tai ky tu thu %i",*i);
*tk='\0'; }
else if (start_state(s));
else if (nostar_end_state(s)) {
catchar_in_token(c,tk);
*i=*i+1; stop=1;
strcpy(tt,attribute(s));}
63
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
else if (star_end_state(s)){
strcpy(tt,attribute(s)); stop=1;}
else {
catchar_in_token(c,tk);
*i=*i+1;
c=readchar(x,*i);}
}
return tk;
}
64
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
void save_token_and_attribute(token tk,attri a){
//luu tru tk,a vao danh sach
}
void lexical_analysis(){
token tk; attri a;
do {
tk=search_token(&i,a);
save_token_and_attribute(tk,a);
}while ((*tk!='\0')&&(i<strlen(x)));
}
65
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
main(){
//nhap xau vao x
i=0;
lexical_analysis();
//in danh sach tu to va thuoc tinh
}
66
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
4. Lp b phn tch t vng
4.2. Phng php iu khin bng bng
- Otomat phi chung mt trng thi bt u
- To bng table biu din hm chuyn trng thi
Ch s hng: trng thi q eQ
Ch s ct: k hiu vo a e
Table[q][a]=p vi p eQ v o(q,a)=p

67
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
4.Lp b phn tch t vng
>
0 1
=
3
>
khac
2
4
*
5
=
7
khac
6
8
*
<
<
9
! =
10
11
khac
*
12
= =
13
14
khac
*
0
+
1
6
=
1
8
+
khac
1
7
1
9
*
2
0
=
2
2
khac
2
1
2
3
*
-
-
24
* =
25
26
khac
*
27
/ =
28
29
khac
*
%
30
ss ln hn bng
dich phai
ss ln hn
ss nho hn bng
dich trai
ss nho hn
ss khac
phu inh
ss khng bng
gan
cng bng
tng 1
cng
tr bng
giam 1
tr
nhn bng
nhn
chia bng
chia
chia ly d
68
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





Trng thi 100:Ko c hm chuyn trng thi
> = < ! ...
0 1 12 5 9
1 3 2 4 4
2 100 100 100 100
...
69
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
4. Lp b phn tch t vng
int table[][MAX];
token search_token (unsigned int *i, attri tt){
// tra ve tri tu vung cua tu to bdau tu vi tri i, thuoc tinh tra ve cho tt
token tk; unsigned char c;
state s=0, cs;
//ct k t trng b
do {
c=readchar(x,*i);
cs=table[s][c];
if (cs==ERROR_STATE){
printf(loi tai vi tri %i,*i); tk=;break; }
70
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
4. Lp b phn tch t vng
else if (star_end_state(cs)) {
strcpy(tt,attribute(cs));
break;
}
else if (nostar_end_state(cs)) {
catchar_in_token(c,tk);
*i++;
strcpy(tt,attribute(cs));
break;
}
71
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
4. Lp b phn tch t vng
else if (*i>=(strlen(x)-1)) {
printf(het xau vao, ko roi vao TT ket thuc);
tk=; break;
}
else{
catchar_in_token(c,tk);
*i++;
s=cs;}
}while(1);
return tk;
}
72
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
4. Lp b phn tch t vng
void create_table(int table[][MAX]){
// tao bang chuyen trang thai table
}
void lexical_analysis(){
token tk; attri a;
create_table(table);
do {
tk=search_token(&i,a);
save_token_and_attribute(tk,a);
}while ((*tk!='\0')&&(i<strlen(x)));
}
73
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
5. Bng cc t t
Gm cc token v cc thuc tnh ca token
Ch s Ttnh Tri t vng token Cac thuc tnh khac
01
02 Num 45
03 Id A
04 Id B
05
06 Relation <
07 Then Then
08 operator +
74
CHNG 2. PHN TCH T VNG
TRNG I HC BCH KHOA NNG
6. Cc cu trc d liu cho bng cc t t
- T chc tun t: mng, danh sch lin kt,
danh sch mc ni
- T chc cy tm kim nh phn
75
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
76
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
77
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
78
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,}
79
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
80
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
81
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)
82
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*=L
0
L
1
L
2
; L
+
=L
1
L
2

83
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}
84
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
85
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()*
86
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
87
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.
88
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()
*
89
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()
*

90
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
91
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
92
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
93
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)
94
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.
95
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
96
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

97
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)
98
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

99
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

100
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. S0S |1S |1
b. S0S| 1S|..|9S|0|..|9
c. NCD D S
D + | -
S0S| 1S|..|9S|0|..|9

101
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:
d. SONCD.S | S.S | S |NCD
NCD D S
D + | -
S0S| 1S|..|9S|0|..|9


102
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?
103
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
104
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

105
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)
106
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)
107
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)
108
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
109
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
110
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
111
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|

112
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
113
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?
114
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:
115
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:
116
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:
117
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

118
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
119
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

120
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}
121
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
122
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 ?
123
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
124
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
125
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?
126
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?
127
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
128
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)
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.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
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.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



131
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
.
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 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)
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 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
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 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|
.
.
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.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
.
.
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.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?

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.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
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.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
.
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.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 |
.
.
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.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)
.
.
.
.
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.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)
.
142
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:
.
.
.
.
<
.
143
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:
.
.
.
.
<
.
144
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:
.
.
.
.
<
.
<
.
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.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;
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.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;
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.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
. .
.
.
. .
.
.
.
. .
. .
. .
.
.
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.2. Phng php th t yu
Cu to:
Stack
$ x1 x2
xi

$ y1 y2
yi
Buffer
Kt qu
B phn
tch
Bng S_R
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.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
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.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
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.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:

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.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
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.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}
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.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
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.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|
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.2. Phng php th t yu
Thut ton
Else
- Bo li v dng vng lp
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.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
158
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
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.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()*
.
.
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.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)
.
.
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.1. Phng php th t yu
Qui tc xc nh mi quan h
(4) S+x hay S+x th x > $
Vi xe () ; e ()*
.
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.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
.
.
.
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.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.
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.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=.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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.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
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.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.

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.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
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.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

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.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)
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.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


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.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
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 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]
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 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

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 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
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.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
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.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
177
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)
(1) (2)
(3) (4)
(5) (6)
178
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
179
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
180
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:
Stt Stack Buffer Hnh ng
0 $0 id*(id+id)$ S5
1 $0 id 5 *(id+id)$ R6(Fid)
2 $0 F 3 *(id+id)$ R4(TF)
3 $0 T 2 *(id+id)$ S7
4 $0 T 2 * 7 (id+id)$ S4
5 $0 T 2 * 7 ( 4 id+id)$ S5
181
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:
Stt Stack Buffer Hnh ng
6 $0 T 2 * 7 ( 4 id 5 +id)$ R6(Fid)
7 $0 T 2 * 7 ( 4 F 3 +id)$ R4(TF)
8 $0 T 2 * 7 ( 4 T 2 +id)$ R2(ET)
9 $0 T 2 * 7 ( 4 E 8 +id)$ S6
10 $0 T 2 * 7 ( 4 E 8 + 6 id)$ S5
11 $0 T 2 * 7 ( 4 E 8 + 6 id 5 )$ R6(Fid)
182
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:
Stt Stack Buffer Hnh ng
12 $0 T 2 * 7 ( 4 E 8 + 6 F 3 )$ R4(TF)
13 $0 T 2 * 7 ( 4 E 8 + 6 T 9 )$ R1(EE+T)
14 $0 T 2 * 7 ( 4 E 8 )$ S11
15 $0 T 2 * 7 ( 4 E 8 ) 11 $ R5(F(E))
16 $0 T 2 * 7 F 10 $ R3(TT*F)
17 $0 T 2 $ R2(ET)
183
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:
Stt Stack Buffer Hnh ng
18 $0 E 1 $ Accept
184
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|0|1
G: S S
S 0S | 1S|0|1
185
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
186
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
)
187
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 tp closure(I) ca VP G
E E
E E + T | T
T T * F | F
F (E) | id
I={E.E}
188
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()
189
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: Tm tt c cc tp goto(I,X) c th
ca VP G
I={ E.E
E.E+T
E.T
T.T*F }
X: E, T
Goto(I,E) v Goto(I,T)
E E
E E + T | T
T T * F | F
F (E) | id
Goto(I,E)=closure({EE.
; EE.+T})
Goto(I,T)=closure({ET.
; TT.*F})
190
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.
191
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

192
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)}
193
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
194
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
195
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
196
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

197
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
198
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

199
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?
200
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

201
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
202
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
203
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)
204
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, $})
205
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
cho I={S.S,$} v
Tnh Closure(I)=?

G: SS
S AA
A aA | d
Closure(I)={ S.S, $
S.AA, $
A.aA, a|d
A.d, a|d }
A o .B|, a
B , b
206
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
G: SS
S AA
A aA | d
I={ S.S, $
S.AA, $
A.aA, a|d
A.d, a|d }
X:{S, A, a, d}
Goto(I,S)=closure({SS.,$})
Goto(I,A)=closure({SA.A,$})
Goto(I,a)=closure({Aa.A,a|d})
Goto(I,d)=closure({Ad., a|d})
207
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

208
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
209
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
210
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 AA
A aA | d
- Xy dng vn phm gia t G
- Tnh I
0
=closure({S.S, $} v tt c cc I
i

- Xc nh hnh ng
211
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 AA
A aA | d
I
0
=closure({S.S, $}
212
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))
Action Goto
a d $ S A
0 S36 S47 1 2
1 Accept
2 S36 S47 5
36 S36 S47 89
47 R3 R3 R3
89 R2 R2 R2
5 R1
213
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))
Stt Stack Buffer Hnh ng
0 $0 aadad$ S36
1 $0 a 36 adad$ S36
2 $0 a 36 a 36 dad$ S47
3 $0 a 36 a 36 d 47 ad$ R3(Ad)
4 $0 a 36 a 36 A 89 ad$ R2(AaA)
5 $0 a 36 A 89 ad$ R2(AaA)
214
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))
Stt Stack Buffer Hnh ng
6 $0 A 2 ad$ S36
7 $0 A 2 a 36 d$ S47
8 $0 A 2 a 36 d 47 $ R3(Ad)
9 $0 A 2 a 36 A 89 $ R2(AaA)
10 $0 A 2 A 5 $ R1(SAA)
11 $0 S 1 $ Accept
215
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
(I
0
I
10
) trn I
2
v I
10
, I
3
v I
7
, I
8
v I
9

216
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.

217
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

218
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)=|

219
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)
220
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)
221
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)
222
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)
223
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
224
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
225
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)
226
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| |
227
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
228
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 tn bin ca
mt ngn ng.

229
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
230
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 TA | T ATA
T 0 | .. | 9 AA |c
T 0|..|9
231
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
232
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|_CS
CC a | b
CS 0 | 1
233
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
234
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
235
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
236
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
237
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, 1 buffer v bng tin on M
Khi to: - stack l S$
- Buffer l x$
Lp:
If (stack l $) v (buffer l $) then
x ng cp v dng vng lp
238
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
239
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 ?

240
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
241
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 sanh
(2) A$ bbc$ Trin khai AbA
(3) bA$ bbc$ i sanh
(4) A$ bc$ Trin khai AbA
242
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 sanh
(6) A$ c$ Trin khai Ac
(7) c$ c$ i sanh
(8) $ $ Chp nhn x ng cp
243
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)
244
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)
245
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:
- Xt sx: E TE c First(TE)={ (, id }
M[E,(]=M[E,id]=ETE
- Xt sx: E+TE c First(+TE)={+}
M[E,+]=E+TE
- Xt sx: TFT c First(FT)={(, id}
M[T,(]=M[T,id]=TFT
246
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:
- Xt sx: T*FT c First(*FT)={*}
M[T,*]=T*FT
- Xt sx: F(E) c First((E))={(}
M[F,(]=F(E)
- Xt sx: Fid c First(id)={id}
M[F,id]=Fid
247
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:
- Xt sx: Ec c follow(E)={), $}
M[E,)]=M[E,$]=Ec
- Xt sx: Tc c follow(T)={),$,+}
M[T,)]=M[T,$]=M[T,+]=Tc
ETETFT F(E)(TE)(T)(FT)
E TE T+TE FT+TE
248
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:

+ * id ( ) $
E ETE ETE
E E+TE E E
T TFT TFT
T T T*FT T T
F Fid F(E)
249
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:
Bi tp:
xy dng bng tin on M cho cc vp LL(1)
trong phn vi php bin i v LL(1). T
cho xu vo v phn tch theo PP tin on
250
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
251
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
252
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 CT tng ng.
v d: | c on ct t(|)
|
1
|
2

t(|
1
) ; t(|
2
)
253
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:
(2) S r nhnh to thnh cu trc chn
|
1

|
2

|
3

If k/htiepefirst(|
1
) Then t(|
1
)
Elseif k/htiepefirst(|
2
) Then t(|2)
Elseif k/htiepefirst(|
3
) Then t(|
3
)
Else baoloi;
254
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
While k/htiepefirst(|) do t(|)
|
|
Repeat t(|)
Until k/htiepefirst(|)
255
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:
(5)


(6)
a
If k/htiep=a Then
k/htiep=k/htieptheo trong xu x
Else baoloi;
B
goi B //t(B);
256
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, dng}
Procedure |
I
;{cc Ctcon biu din Ae}

257
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.
258
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: E TE
E+TE | c
T FT
T*FT | c
F(E) | id

259
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: Biu c php
T E
E:
T E
+
E:
F T
T:
F T
*
T:
F:
E
( )
id
260
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: gii thut cc ctcon tng ng
k/htiep: k hiu kt thc;
function Dockh:k hiu kt thc; {c k/hiu
tip trong x}
Procedure Baoloi; {a thng bo li, dng}
261
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: gii thut cc ctcon tng ng
Procedure E;
Begin
T; Ephay;
End;
262
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: gii thut cc ctcon tng ng
Procedure Ephay;
Begin
If k/htiep=+ Then
Begin k/htiep:=Dockh;
T;
Ephay;
End;
End;
263
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: gii thut cc ctcon tng ng
Procedure T;
Begin
F;
Tphay;
End;
264
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: gii thut cc ctcon tng ng
Procedure Tphay;
Begin
If k/htiep=* Then
Begin k/htiep:=Dockh;
F;
Tphay;
End;
End;
265
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
Procedure F;
Begin
If k/htiep=id Then k/htiep:=Dockh
Else
If k/htiep=( Then
Begin k/htiep:=Dockh;
E;
if k/htiep=) Then k/htiep:=Dock
Else baoloi;
End
Else baoloi; End;
266
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;
E;
if k/htiep=$ then x ng CP
else baoloi;
End.
267
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
Bi tp:
Xy dng gii thut qui khng quay lui
cho cc VP LL(1) trong phn bi tp vi
php bin i v VP LL(1)
268
CHNG 4. CC PHNG PHP PHN TCH C
PHP
TRNG I HC BCH KHOA NNG
DSsv lp 11tltcdcntt (10, 8)
(1) o Minh m
(2)Nguyn Th Ng
L Th Khnh Bnh
cng Lanh
Nguyn Ngc Sn
Mai Phc Tng
Nguyn xun Li
Nguyn Lng dng
Nguyn Hu Lu
L cng Minh

You might also like