If you can't read please download the document
Upload
vuongque
View
217
Download
1
Embed Size (px)
Citation preview
CHNG TRNH DCH
Bi 14: Phn Tch LR & Cc B T
ng Sinh Parser
Ni dung
1. B phn tch kiu gt-thu (shift-reduce)
2. My phn tch c php LR
3. Vn phm h LR
CLOSURE v GOTO
th LR(0)
SLR
4. nh gi v phn tch LR
5. Cc b t ng sinh parser
6. Bi tp
TRNG XUN NAM 2
B phn tch kiu gt-thu (shift-reduce)
Phn 1
TRNG XUN NAM 3
B phn tch kiu gt-thu
Cch lm vic xut pht t vic quan st hot ng
ca phn tch bottom-up
Bt u t nt l phi nht
Thu gn dn v nt gc
Ch 2 kiu hot ng chnh:
Gt (shift)
Thu (reduce)
Shift: ly k hiu tip theo
Reduce: thu gn nhnh thnh mt k hiu trung gian
TRNG XUN NAM 4
B phn tch kiu gt-thu
L mt dng automat lm vic theo bng phng n
( c cp ti trong bi trc)
Vn : xy dng bng phng n nh th no
Khi no th shift
Khi no th reduce
Cn hot ng no khc?
C trng thi b tranh chp?
Hot ng ca stack ra sao?
ngha cc trng thi ca my
TRNG XUN NAM 5
V d v b phn tch gt-thu
TRNG XUN NAM 6
V d v b phn tch gt-thu
TRNG XUN NAM 7
V d v b phn tch gt-thu
TRNG XUN NAM 8
My phn tch c php LRPhn 2
TRNG XUN NAM 9
Cu trc ca my phn tch LR
TRNG XUN NAM 10
Cu trc ca my phn tch LR
My phn tch LR l mt cp (STACK, INPUT)
Trng thi ban u (s0, a1a2an$)
Trng thi trung gian (s0X1s1Xmsm, aiai+1an$)
Trng thi kt thc thnh cng (s0Ss1, $)
Bng phng n gm 2 phn
Bng action: ACTION[s, a] vi s l mt trng thi v a
l mt terminal, gi tr trong bng ch c th l 1 trong 4
hnh ng gt (shift), thu (reduce), nhn (accept), li
(error)
Bng goto: GOTO[s, A] vi s l mt trng thi v A l
mt non-terminal, ch ra cch dch chuyn trng thi
TRNG XUN NAM 11
Bng ACTION
1. Shift s: y k hiu input v trng thi s vo stack(s0X1s1Xmsm,aiai+1an$) (s0X1s1Xmsmais,ai+1an$)
2. Reduce k: thu gn bi lut th k (A ), r = | | Ly 2r k hiu ra khi stack: (s0X1s1Xmsm,aiai+1an$) (s0X1s1Xm-rsm-r,ai+1an$)
y vo stack A v s = GOTO[sm-r, A]:
(s0X1s1Xm-rsm-r,aiai+1an$)
(s0X1s1XmsmAs,ai+1an$)
Ghi nhn pht sinh lut A
3. Accept: phn tch thnh cng
4. Error: phn tch pht hin li
TRNG XUN NAM 12
V d hot ng ca my LR
TRNG XUN NAM 13
V d hot ng ca my LR
TRNG XUN NAM 14
Vn phm h LRPhn 3
TRNG XUN NAM 15
Vn phm h LR
Vic chnh l lm th no xy dng bng phng n? C nhiu thut ton lm vic ny
LR(0): thut ton c bn, mi thut ton LR u da trn n
SLR (Simple LR): ci tin mt cht t LR(0), mnh hn, d ci t
LR(1): cn gi l LR chnh tc ~ Canonical LR, s dng cho nhiu loi vn phm, kch c bng rt ln
LALR(1): cn bng gia SLR v LR, dng cho hu ht cc vn phm nhn to
TRNG XUN NAM 16
Khi nim c s
d dng cho vic thc thi automat, ta b sung
thm lut S S vo tp lut
Khi nim LR(0) item: mt lut ang c phn
tch d, s dng du chm (.) ngn gia phn
trc v phn sau (tng t nh thut ton Earley)
Lut S ABC s c 4 item:
1. S .ABC
2. S A.BC
3. S AB.C
4. S ABC.
TRNG XUN NAM 17
Closure(I) bao ng ca I
TRNG XUN NAM 18
GOTO(I, X) hm chuyn
TRNG XUN NAM 19
Xy dng th LR(0)
C cnh I n J l X
X l terminal: (I, X) =
shift J
X l non-terminal: (I,
X) = goto J
Nu X = $: accept
Nu state cha A .
th in reduce vo
mi trn dng
TRNG XUN NAM 20
V d
S S $ S ( L ) S x
L S L L , S
TRNG XUN NAM 21
V d
TRNG XUN NAM 22
SLR
S E $ E T + E
E T T x
TRNG XUN NAM 23
SLR
SLR sa i li cch tnh reduce, ch s dng
reduce cho nhng tnh hung X thuc FOLLOW(A)
Ch : c nhiu loi xung t, phng php SLR
ch sa c mt phn rt nh
Xung t gia shift v reduce
Xung t gia reduce v reduce
TRNG XUN NAM 24
nh gi v phn tch LRPhn 4
TRNG XUN NAM 25
nh gi v phn tch LR
Phn tch LR khng mnh cho vn phm CFG
Nhng mnh cho hu ht ngn ng nhn to LR(0): l ht nhn
SLR: n gin, yu
LALR(1): tm dng
LR(1): bng qu to
LR(k): qu phc tp
Nhanh ~ tuyn tnh
Rt nhiu bin th
GLR ~ Earley
TRNG XUN NAM 26
Cc b t ng sinh parserPhn 5
TRNG XUN NAM 27
Cc b t ng sinh parser
Vi cch tip cn xy dng automat tt nh: cho
trc vn phm G, ta c th to mt bng phn tch
ring ca G, bng phn tch ny ch cn to mt ln
v c nh i vi vn phm G
Cc b parser generator t ng ha vic xy dng
cc b phn tch vn phm:
Ngi dng nh ngha vn phm G
Thit lp cc x l cn thc hin khi hon thnh cu
Phn mm phn tch G, t sinh bng phng n
Phn mm t sinh m b phn tch, chn nhng on x
l vo cc v tr thch hpTRNG XUN NAM 28
Cc b t ng sinh parser
Hu ht cc parser generator sinh bng LALR(1)
Bng ny tt x l hu ht cc ngn ng nhn to
Bng kch thc khng qu ln (vi ngn ng C, bng
LR(1) c khong 10000 trng thi, bng LALR ch c
khong 350 trng thi)
Parser generator u tin l META II (1960)
Ni ting nht: YACC (1975, m C)
Sinh m Java: SableCC
Sinh m C#, giao din trc quan: GOLD Parser
(yu cu tm hiu phn mm ny nh l bi tp)
TRNG XUN NAM 29
Bi tpPhn 6
TRNG XUN NAM 30
Bi tp
1. Cho vn phm G:S AS | b A SA | a
Xy dng b cc tp item LR(0) cho vn phm ny
Xy dng bng phn tch c php bng thut ton SLR
2. Cho vn phm G:E E + T | T
T T F | F
F F * | a | b
Xy dng b cc tp item LR(0) cho vn phm ny
Xy dng bng phn tch c php bng thut ton SLR
TRNG XUN NAM 31