Xây dựng y pháp bng hai pơng
pháp: Trên xuống ới lên
Các bước giải chung
Khi xây d ng cây cú pháp (ho c b ng phân tích) b ng ph ng pháp Top-Down ho c ươ
Bottom-Up, c n ti n hành qua các b c chung nh sau: ế ướ ư
B c 1: Xây d ng văn ph m tăng c ngướ ườ
- Thêm m t hi u b t đ u m i (ví d : S' S) đ h tr cho vi c phân tích.
- Xác đ nh t p hi u k t thúc ( ) và t p hi u ch a k t thúc ( ). ế Σ ư ế Δ
- Ghi rõ các lu t sinh c a văn ph m.
B c 3: Xây d ng b ng phân tích (n u c n) ho c ti n hành phân tích cú phápướ ế ế
- Đ i v i Top-Down: Suy di n t hi u b t đ u theo chu i nh p.
- Đ i v i Bottom-Up: Gi m t chu i nh p v hi u b t đ u.
B c 4: Vcây cú phápướ
- Cây th hi n quá trình phân tích, trong đó nút g c là hi u b t đ u.
1. Phân tích pháp Trên Xuống (Top-Down Parsing)
dụ 1:
Văn ph m:
(1) S A a
(2) A B
(3) B b
Chu i c n phân tích: ba
Gi i:
B c 1: Xây d ng văn ph m tăng c ng:ướ ườ
(1') S' S
(2') S A a
(3') A B
(4') B b
T p hi u ch a k t thúc: = {S', S, A, B} ư ế Δ
T p hi u k t thúc: = {a, b} ế Σ
B c 2: Phân tích chu i ba:ướ
- B t đ u t S' S
- S A a
- A B
- B b
Cây cú pháp:
S'
|
S
/ \
A a
|
B
|
b
dụ 2:
Văn ph m:
(1) S (S) | SS | a
Chu i c n phân tích: (a)a
Gi i:
B c 1: Xây d ng văn ph m tăng c ng:ướ ườ
(1') S' S
T p hi u ch a k t thúc: = {S', S} ư ế Δ
T p hi u k t thúc: = {(, ), a} ế Σ
B c 2: Phân tích:ướ
- S' S
- S (S)
- S a
- Sau đó S a
Cây cú pháp:
S'
|
S
/ | \
( S )
|
S
|
a
dụ 3:
Văn ph m:
(1) E E + T | T
(2) T T * F | F
(3) F (E) | id
Chu i c n phân tích: id + id * id
Gi i:
B c 1: Văn ph m tăng c ng:ướ ườ
(1') E' E
= {E', E, T, F}Δ
= {+, *, (, ), id}Σ
B c 2: Phân tích:ướ
- E E + T
- E T
- T F
- F id
Cây cú pháp:
E'
|
E
/ | \
E + T
| |
T T
| / \
F F *
| |
id id
2. Phân tích pháp Dưới Lên (Bottom-Up Parsing)
dụ 1:
Văn ph m:
(1) S A a
(2) A B
(3) B b
Chu i: ba
Gi i:
B c 1: Văn ph m tăng c ng:ướ ườ
(1') S' S
= {S', S, A, B}Δ
= {a, b}Σ
B c 2: Phân tích t d i lên:ướ ướ
- b B
- B A
- A a S
- S S'
Cây cú pháp:
S'
|
S
/ \
A a
|
B
|
b
dụ 2:
Văn ph m:
(1) S (S) | SS | a
Chu i: (a)a
Gi i:
B c 1: Văn ph m tăng c ng:ướ ườ
(1') S' S
B c 2: Phân tích:ướ
- a S
- (S) S
- S S S
- S S'
Cây cú pháp:
S'
|
S
/ \
S S
/ | \
( S )
|
a
dụ 3:
Văn ph m:
(1) E E + T | T
(2) T T * F | F
(3) F (E) | id
Chu i: id + id * id
Gi i:
B c 1: Văn ph m tăng c ng:ướ ườ
(1') E' E
B c 2: Phân tích:ướ
- id F
- F T
- id F
- F T
- T * T T
- id F
- F T
- T + T E
Cây cú pháp:
E'
|
E
/ | \
E + T
| |
T T
| / \
F F *
| |
id id

Preview text:

Xây dựng cây cú pháp bằng hai phương
pháp: Trên xuống và Dưới lên
Các bước giải chung Khi xây d n ự g cây cú pháp (ho c ặ b n ả g phân tích) b n ằ g ph n ươ g pháp Top-Down ho c ặ Bottom-Up, c n ầ ti n ế hành qua các b c ướ chung nh ư sau:
Bước 1: Xây dựng văn ph m ạ tăng c n ườ g - Thêm m t ộ ký hi u ệ b t ắ đ u ầ m i ớ (ví d : ụ S' → S) đ ể h ỗ tr ợ cho vi c ệ phân tích. - Xác đ n ị h t p ậ ký hi u ệ k t ế thúc ( ) Σ và t p ậ ký hi u ệ ch a ư k t ế thúc ( ) Δ . Bước 2: Xác đ n ị h các lu t ậ s n ả xu t ấ - Ghi rõ các lu t ậ sinh c a ủ văn ph m. ạ Bước 3: Xây dựng b n ả g phân tích (n u ế c n ầ ) ho c ặ ti n
ế hành phân tích cú pháp - Đ i ố v i ớ Top-Down: Suy di n ễ t ừ ký hi u ệ bắt đ u ầ theo chu i ỗ nh p ậ . - Đ i ố v i ớ Bottom-Up: Gi m ả t ừ chu i ỗ nh p ậ v ề ký hi u ệ b t ắ đ u ầ . Bước 4: Vẽ cây cú pháp - Cây th ể hi n
ệ quá trình phân tích, trong đó nút g c ố là ký hi u ệ b t ắ đ u ầ .
1. Phân tích cú pháp Trên Xuống (Top-Down Parsing) Ví dụ 1: Văn ph m: ạ (1) S → A a (2) A → B (3) B → b Chu i ỗ c n ầ phân tích: ba Giải:
Bước 1: Xây dựng văn ph m ạ tăng c n ườ g: (1') S' → S (2') S → A a (3') A → B (4') B → b T p ậ ký hi u ệ ch a ư kết thúc: Δ = {S', S, A, B} T p ậ ký hi u ệ k t ế thúc: Σ = {a, b} Bước 2: Phân tích chu i ỗ ba: - B t ắ đ u ầ t ừ S' → S - S → A a - A → B - B → b Cây cú pháp: S' | S / \ A a | B | b Ví dụ 2: Văn ph m: ạ (1) S → (S) | SS | a Chu i ỗ c n ầ phân tích: (a)a Giải:
Bước 1: Xây dựng văn ph m ạ tăng c n ườ g: (1') S' → S T p ậ ký hi u ệ ch a ư kết thúc: Δ = {S', S} T p ậ ký hi u ệ k t ế thúc: Σ = {(, ), a} Bước 2: Phân tích: - S' → S - S → (S) - S → a - Sau đó S → a Cây cú pháp: S' | S / | \ ( S ) | S | a Ví dụ 3: Văn ph m: ạ (1) E → E + T | T (2) T → T * F | F (3) F → (E) | id Chu i ỗ c n ầ phân tích: id + id * id Giải: Bước 1: Văn ph m ạ tăng c n ườ g: (1') E' → E Δ = {E', E, T, F} Σ = {+, *, (, ), id} Bước 2: Phân tích: - E → E + T - E → T - T → F - F → id Cây cú pháp: E' | E / | \ E + T | | T T | / \ F F * | | id id
2. Phân tích cú pháp Dưới Lên (Bottom-Up Parsing) Ví dụ 1: Văn ph m: ạ (1) S → A a (2) A → B (3) B → b Chu i ỗ : ba Giải: Bước 1: Văn ph m ạ tăng c n ườ g: (1') S' → S Δ = {S', S, A, B} Σ = {a, b} Bước 2: Phân tích t ừ d i ướ lên: - b → B - B → A - A a → S - S → S' Cây cú pháp: S' | S / \ A a | B | b Ví dụ 2: Văn ph m: ạ (1) S → (S) | SS | a Chu i ỗ : (a)a Giải: Bước 1: Văn ph m ạ tăng c n ườ g: (1') S' → S Bước 2: Phân tích: - a → S - (S) → S - S S → S - S → S' Cây cú pháp: S' | S / \ S S / | \ ( S ) | a Ví dụ 3: Văn ph m: ạ (1) E → E + T | T (2) T → T * F | F (3) F → (E) | id Chu i ỗ : id + id * id Giải: Bước 1: Văn ph m ạ tăng c n ườ g: (1') E' → E Bước 2: Phân tích: - id → F - F → T - id → F - F → T - T * T → T - id → F - F → T - T + T → E Cây cú pháp: E' | E / | \ E + T | | T T | / \ F F * | | id id