Professional Documents
Culture Documents
Đoán Trước Không Đệ Quy
Đoán Trước Không Đệ Quy
Xây dựng Parsing Table M cho phân tích cú pháp đoán trước không đệ quy
1. Bước 1 : Loại bỏ tính đệ quy trái.
2. Bước 2 : Tính tập FIRST
3. Bước 3 : Tính tập FOLLOW
4. Bước 4 : Xây dựng bảng parsing table M
EE+T|T
TT*F|F
F (E) | id
o Khử đệ quy trái cho văn phạm trên :
E TE’
E’ +TE’ |
T FT’
T’ *FT’ |
F (E) | id
Tính First
First( ( ) = { ( } First( T ) = { (, id }
First( ) ) = { ) } First( E ) = { (, id }
First( id ) = { id } First( E’ ) = { +, }
First( + ) = { + } First( T’ ) = { *, }
First( * ) = { * } First( F ) = { (, id }
{
AB
¿
Thì thêm Follow(A) vào Follow(B)
Ví dụ
Cho văn phạm :
E TE’
E’ +TE’ |
T FT’
T’ *FT’ |
F (E) | id
Tính Follow
Follow(E) = Follow(E’) = {$, )}
Follow(T) = Follow(T’) = {+, $, )}
Follow(F) = {*, + , $, )}
d. Xây dựng Passing Table M
Với mỗi luật sinh A của văn phạm, thực hiện các bước :
Với mỗi kí hiệu kết thúc a ∈ FIRST(), thêm A vào M[A,a]
Nếu ∈ FIRST() :
o Nếu ∈ FIRST() thì đưa luật sinh A vào M[A,b] với mỗi kí
hiệu kết thúc b ∈ FOLLOW(A)
o Nếu ∈ FIRST() VÀ $ ∈ FOLLOW(A) thì đưa luật sinh A
vào M[A,$]
Ô còn trống trong bảng tương ứng với lỗi (error)
e. Ví dụ chứng minh :
Cho văn phạm , hãy xây dựng bảng phân tích cú pháp đoán trước không đệ quy.
E TE’
E’ +TE’ |
T FT’
T’ *FT’ |
F (E) | id