2. Phương pháp phân tích cú pháp trên xuống
2.3. Phương pháp tiên đoán
Cấu tạo:
xi … x2 x1 $ ai … a2 a1 $
Bộ phân tích Bảng tiên đoán M
Kết quả
Stack Buffer
Giáo trình Kiến trúc máy tính và Hệ điều hành
235
2. Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán
Cấu tạo:
- Stack: xixi-1…x0$ với xt (ΣΔ) - Buffer: aiai-1…a0$ với at Σ
- Bảng tiên đoán M:
Chỉ số hàng: A Δ
Chỉ số cột: a Σ
M[A,a]: A hoặc rỗng
Giáo trình Kiến trúc máy tính và Hệ điều hành
236
CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
2. Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán
Hoạt động: Tại một thời điểm nếu:
- Ở stack là $ và buffer là $: x đúng CP VPG - Ở đỉnh stack và buffer aΣ: đối sánh a
- Ở đỉnh stack là AΔ thì nếu:
• M[A,a]=A : triển khai A ở đỉnh stack
• M[A,a]=rỗng: xâu x không đúng CP VPG
Giáo trình Kiến trúc máy tính và Hệ điều hành
237
2. Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán
Giải thuật:
Sử dụng: 1 stack và 1 buffer Khởi tạo: - stack là S$
- Buffer là x$
Lặp:
If (stack là $) và (buffer là $) then x đúng cp và dừng vòng lặp
Giáo trình Kiến trúc máy tính và Hệ điều hành
238
CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
2. Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán
Giải thuật:
Else if (aΣ ở đỉnh stack và buffer) then đối sánh a ở đỉnh stack và buffer Else if (AΔ ở đỉnh stack)
và (a Σ ở đỉnh buffer) then if (M[A,a]=A)then
triển khai A ở đỉnh stack
Else x k0 đúng CP VPG, dừng vòng lặp
Giáo trình Kiến trúc máy tính và Hệ điều hành
239
2. Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán
Ví dụ: SaA
AbA | c
Xâu x: abbc có đúng CP của VP trên ?
Giáo trình Kiến trúc máy tính và Hệ điều hành
240
CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
2. Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán
Ví dụ:
a b c $
S SaA
A AbA Ac
Giáo trình Kiến trúc máy tính và Hệ điều hành
241
2. Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán
Ví dụ:
STT Stack Buffer Hành động
(0) S$ abbc$ Triển khai SaA
(1) aA$ abbc$ Đối sánh
(2) A$ bbc$ Triển khai AbA
(3) bA$ bbc$ Đối sánh
(4) A$ bc$ Triển khai AbA
Giáo trình Kiến trúc máy tính và Hệ điều hành
242
CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
2. Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán
Ví dụ:
STT Stack Buffer Hành động
(5) bA$ bc$ Đối sánh
(6) A$ c$ Triển khai Ac
(7) c$ c$ Đối sánh
(8) $ $ Chấp nhận x đúng cp
Giáo trình Kiến trúc máy tính và Hệ điều hành
243
2. Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán
Xây dựng bảng tiên đoán M: 2 qui tắc
(1) sx A thì M[A,a]=A với afirst()
(1) sx A thì M[A,a]=A với a
follow(A)
Giáo trình Kiến trúc máy tính và Hệ điều hành
244
CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
2. Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán
Xây dựng bảng tiên đoán M:
Ví dụ: xây dựng bảng tiên đoán M cho vp:
E TE’
E’+TE’ | T FT’
T’*FT’ | F(E) | id
(1)
(2) (3) (4)
(5) (6) (7) (8)
Giáo trình Kiến trúc máy tính và Hệ điều hành
245
2. Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán
Xây dựng bảng tiên đoán M:
- Xét sx: E TE’ có First(TE’)={ (, id } M[E,(]=M[E,id]=ETE’
- Xét sx: E’+TE’ có First(+TE’)={+}
M[E’,+]=E’+TE’
- Xét sx: TFT’ có First(FT’)={(, id}
M[T,(]=M[T,id]=TFT’
Giáo trình Kiến trúc máy tính và Hệ điều hành
246
CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
2. Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán
Xây dựng bảng tiên đoán M:
- Xét sx: T’*FT’ có First(*FT’)={*}
M[T’,*]=T’*FT’
- Xét sx: F(E) có First((E))={(}
M[F,(]=F(E)
- Xét sx: Fid có First(id)={id}
M[F,id]=Fid
Giáo trình Kiến trúc máy tính và Hệ điều hành
247
2. Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán
Xây dựng bảng tiên đoán M:
- Xét sx: E’ có follow(E’)={), $}
M[E’,)]=M[E’,$]=E’
- Xét sx: T’ có follow(T’)={),$,+}
M[T’,)]=M[T’,$]=M[T’,+]=T’
ETE’TFT’ F(E)(TE’)(T)(FT’) E TE’ T+TE’ FT’+TE’
Giáo trình Kiến trúc máy tính và Hệ điều hành
248
CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
2. Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán
Xây dựng bảng tiên đoán M:
+ * id ( ) $
E ETE’ ETE’
E’ E’+TE’ E’ ε E’ε
T TFT’ TFT’
T’ T’ ε T’*FT’ T’ ε T’ ε
F Fid F(E)
Giáo trình Kiến trúc máy tính và Hệ điều hành
249
2. Phương pháp phân tích cú pháp trên xuống 2.3. Phương pháp tiên đoán
Xây dựng bảng tiên đoán M:
Bài tập:
xây dựng bảng tiên đoán M cho các vp LL(1) trong phần vài phép biến đổi về LL(1). Tự
cho xâu vào và phân tích theo PP tiên đoán
Giáo trình Kiến trúc máy tính và Hệ điều hành
250
CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG