You are on page 1of 9

BÀI THỰC HÀNH 4

Môn: Chương trình dịch


Nội dung: Phân tích cú pháp: Thuật toán quy hoạch động, thuật toán đơn định.
I. Bài tập thuật toán top-down

 Chiến lược phân tích top-down (trên xuống): cho VPPNC G = (, , P, S) và
một câu cần phân tích w. Xuất phát từ điểm khởi đầu (S), áp dụng các suy
dẫn trái, tiến từ trái qua phải thử tạo ra câu đưa vào phân tích w. Lưu ý:
Phân tích từng ký tự từ trái sáng phải của xâu đầu vào
1. Chỉ ra quá trình thực hiện phân tích top-down của chuỗi raid thuộc văn phạm G có tập
luật:
S→rXd|rZd
X→oa|ea
Z→ai
2. Chỉ ra quá trình thực hiện phân tích top-down của chuỗi road thuộc văn phạm G có tập
luật:
S→rXd|rZd
X→oa|ea
Z→ai
3. Chỉ ra quá trình thực hiện phân tích top-down của chuỗi read thuộc văn phạm G có tập
luật:
S→rXd|rZd
X→oa|ea
Z→ai
4. Chỉ ra quá trình thực hiện phân tích top-down của chuỗi ((x+y)=(y+x)) thuộc văn
phạm G có tập luật:
S→B
B→R|(B)
R→E=E
E→x|y|(E+E)
5. Chỉ ra quá trình thực hiện phân tích top-down của chuỗi ((aopb)=(bopa)) thuộc văn
phạm G có tập luật:
S→A
A → B | (A )
B→E=E
E → ( E op E )|a | b
6. Chỉ ra quá trình thực hiện phân tích top-down của chuỗi ((x+x)= (y+y)) thuộc văn
phạm G có tập luật:
S→T
T→R|(F)
R→ F = F
F→x|y|(F+F)
7. Có thể áp dụng thuật toán phân tích top-down cho chuỗi (a+a)*a thuộc văn phạm G
dưới đây hay không? Chỉ ra quá trình thực hiện nếu có thể
E→E+T|T
T→T*F|F
F→(E)|a
8. Có thể áp dụng thuật toán phân tích top-down cho chuỗi (b-b)*b thuộc văn phạm G
dưới đây hay không? Chỉ ra quá trình thực hiện nếu có thể
E → E + T | T| E-T
T→T*F|F
F→(E)|b
9. Có thể áp dụng thuật toán phân tích top-down cho chuỗi (aopa)opa thuộc văn phạm G
dưới đây hay không? Chỉ ra quá trình thực hiện nếu có thể
E → E op T | T| EopT
T → T op F | F
F→(E)|a
10. Tương tự câu trên, chỉ ra quá trình phân tích topdown của chuỗi true and not false
với tập luật:
E → E and T | T
T → T or F | F
F → not F | ( E ) | true | false
11. Chỉ ra quá trình thực hiện phân tích top-down của chuỗi abbcbd thuộc văn phạm G
có tập luật:
S→aA|bA
A→cA|bA|d
12. Chỉ ra quá trình thực hiện phân tích top-down của chuỗi aaab thuộc văn phạm G có
tập luật:
S→AB
A→aA|ϵ
B→b|bB
II. Bài tập thuật toán CYK

1. Cho văn phạm G có tập luật:


S → r X d | r Z d|d X r
X → o a | e a|r|b
Z→ai
Thuật toán CYK có phân tích thành công xâu w = board không? Chỉ ra?
2. Cho văn phạm G có tập luật:
S→rXd|rZd
X → o a | e a|r
Z→ai
Thuật toán CYK có phân tích thành công xâu w = roar không? Chỉ ra?
3. Cho văn phạm G có tập luật:
S→rXd|rZd
X→oa|ea
Z→ai
Thuật toán CYK có phân tích thành công xâu w = roar không? Chỉ ra?
4. Cho văn phạm G:
S→AA | AS | b
A→SA | AS | a
Thuật toán CYK có phân tích thành công xâu w = aaabbb không? Chỉ ra?
5. Cho văn phạm G:
S → AB | XB
T → AB | XB
X → AT
A→a
B→b
Thuật toán CYK có phân tích thành công xâu w = ababab không? Chỉ ra?
6. Sử dụng thuật toán CYK để chỉ ra cây phân tích cho chuỗi ((3+1)= (1+3)) thuộc văn
phạm G có tập luật:
S→T
T→R|(F)
R→ F = F
F → số | ( F + F ) Với số là token của các số.
7. Sử dụng thuật toán CYK để chỉ ra cây phân tích cho chuỗi (5+7)*3 thuộc văn phạm G
E→E+T|T
T→T*F|F
F → ( E ) | số
8. Sử dụng thuật toán CYK để chỉ ra cây phân tích cho chuỗi (10-2)*2 thuộc văn phạm G
E → E + T | T| E - T
T→T*F|F
F → ( E ) | số
9. Sử dụng thuật toán CYK để chỉ ra cây phân tích cho chuỗi (5+7)*4 thuộc văn phạm G
E → E op T | T
T → T op F | F
F → ( E ) | stn
Biết op là token toán tử với các từ vị {+,-,*,/}, stn là token của các số tự nhiên.
10. Chỉ ra cây phân tích của chuỗi true and not false sinh bởi thuật toán CYK với tập
luật văn phạm G
E → E and T | T
T → T or F | F
F → not F | ( E ) | true | false
11. Cho văn phạm G:
S→AA | AS | b
A→SA | AS | a
Chỉ ra quá trình thực hiện thuật toán CYK với w = abaab
12. Cho văn phạm G:
S → AB | XB
T → AB | XB
X → AT
A→a
B→b
Chỉ ra quá trình thực hiện thuật toán CYK với w = aaabbb
III. Bài tập thuật toán LL(1)

 FIRST(): là tập các ký hiệu kết thúc bắt đầu các xâu được suy dẫn từ .
 FOLLOW(A): là tập các ký hiệu kết thúc a mà chúng có thể xuất hiện ngay bên phải
của A ở trong một số dạng câu, tức là tập các ký hiệu kết thúc a sao cho tồn tại một suy
dẫn dạng E + Aa đối với ,  bất kỳ. Nếu A là ký hiệu bên phải nhất trong một số
dạng câu thì ta thêm $ vào FOLLOW(A).

 Tham khảo Tính First:


A → abc / def / ghi

First(A) = { a , d , g }
X→∈

First(X) = { ∈ }

First(a) = { a } với a là Terminal

X → Y1Y2Y3

If ∈ ∉ First(Y1), then First(X) = First(Y1)


If ∈ ∈ First(Y1), then First(X) = {First(Y1) – ∈ } ∪ First(Y2Y3)
If ∈ ∉ First(Y2), then First(Y2Y3) = First(Y2)
If ∈ ∈ First(Y2), then First(Y2Y3) = { First(Y2) – ∈ } ∪ First(Y3)
 Tham khảo Tính Follow:
S là Non-Terminal khởi đầu, Follow(S)={$}.

A → αB: Follow(B) = Follow(A)

A → αBβ:
If 𝜀 ∉ First(β), then Follow(B) = First(β)
If 𝜀 ∈ First(β), then Follow(B) = { First(β) – ∈ } ∪ Follow(A)
Lưu ý:

 ∈ có thể xuất hiện trong First của một Non-Terminal


 ∈ sẽ không bao giờ xuất hiện trong Follow của một Non-Terminal
 Bảng phân tích:

1. Tính First, Follow và tạo bảng phân tích LL(1) cho văn phạm sau:
S→Ac|BBc
C→b|bCd
D→bd|bDd
A→BC
B→dBb|dDb|ϵ
2. Tính First, Follow và tạo bảng phân tích LL(1) cho văn phạm sau:
S→AD|abc
B→dBc|CC
C→DCb|CDb|ϵ
A→ Bc
D→Dd|ϵ
3. Tính First, Follow và Tạo bảng phân tích LL(1) cho văn phạm sau và chỉ ra rõ quá
trình phân tích chuỗi w=(a+a).
S→F
S→(S+F)
F→a
4. Tính First, Follow và tạo bảng phân tích LL(1) cho văn phạm sau:
S→A
A→T|A+T
T→b|(A)
5. Tính First, Follow và tạo bảng phân tích LL(1) cho văn phạm sau:
E→E or T|T
T→T and F|F
F→ not F|(E)|x
6. Tính First, Follow và tạo bảng phân tích LL(1) cho văn phạm sau:
S → aBDh
B → cC
C → bC / ∈
D → EF
E→g/∈
F→f/∈
7. Tính First, Follow và tạo bảng phân tích LL(1) cho văn phạm sau:
S → A
A → aB / Ad
B → b
C → g

8. Tính First, Follow và tạo bảng phân tích LL(1) cho văn phạm sau:

S → (L) / a
L → SL’
L’ → ,SL’ / ∈

9. Tính First, Follow và tạo bảng phân tích LL(1) cho văn phạm sau:

S → AaAb / BbBa


A→∈
B→∈

10. Tính First, Follow và tạo bảng phân tích LL(1) cho văn phạm sau:

E→E+T/T
T→TxF/F
F → (E) / id

11. Tính First, Follow và tạo bảng phân tích LL(1) cho văn phạm sau:

E → TE’
E’ → + TE’ / ∈
T → FT’
T’ → x FT’ / ∈
F → (E) / id
12. Tính First, Follow và tạo bảng phân tích LL(1) cho văn phạm sau:
S → ACB / CbB / Ba
A → da / BC
B → g / ∈
C → h / ∈

You might also like