IT4073:NGÔN NG và
PH NG PHÁP D CHƯƠ
Ph m Đăng H i
haipd@soict.hut.edu.vn
05/29/13 2
Ch ng 3: Phân tích cú phápươ
1. Bài toán phân tích cú pháp
2. Ph ng pháp phân tích cú pháp quay luiươ
3. Ph ng pháp phân tích b ngươ
4. Ph ng pháp phân tích cú pháp t t đ nhươ
5. Phân tích cú pháp cho PL/0
05/29/13 3
Bài toán đ t ra
Cho
Văn ph m phi ng c nh G
G = (VT, VN, P, S)
Xâu ω V*T
H i
ω∈ L(G)?
N u ếω L(G)
Ch ra các s n xu t đã s d ng đ sinh ra
ω
C u trúc nên cây suy d n
1. Bài toán phân tích cú pháp
Trong ch ng trình d ch, ươ
xâu ω là chu i các token
thu đ c t giai đo n ượ
tr c – ướ phân tích t v ng
Program Vidu;
Begin
X := 10
End.
PROGRAM IDENT
SEMICOLON BEGIN IDENT
ASSIGN NUMBER END
PERIOD
05/29/13 4
Ph ng pháp phân tíchươ
Ki m tra xâu phân tích t trái qua ph i
Ki m tra ký hi u trái nh t c a xâu c n phân tích
T i hi u ti p,.. Cho t i hi u cu i cùng ế
Ph ng pháp xây d ng cây phân tíchươ
Trên xu ng (Top-down): S * ω?
D i lên (ướ Bottom-up): ω * S?
Ph ng pháp l a ch n s n xu t (ươ Aα1|…|αn)
Quay lui (backtracking)
Th l n l t các s n xu t ượ
T t đ nh ( deterministic)
Xác đ nh đ c duy nh t m t s n xu t thích h p ượ
1. Bài toán phân tích cú pháp
05/29/13 5
Phân tích trái
Phân tích trái c a xâu αdãy các s n xu t
đ c s d ng trong ượ suy d n trái t S ra α
Các s n xu t đ c đánh s th t 1,..p ượ
Phân tích là danh sách c s t 1 đ n p ế
Ví d cho văn ph m
1. E T+E
2. E T
3. T F* T
4. T F
5. F (E)
6. F a
Phân tích trái c a xâu a*(a+a)23645146246
1. Bài toán phân tích cú pháp
Xét xâu a*(a+a)
E
2 T
3 F*T
6 a*T
4 a*F
5a*(E)
1 a*(T+E)
4 a*(F+E)
6 a*(a+E)
2 a*(a+T)
4 a*(a+F)
6 a*(a+a)