Khụi phục lỗi trong phõn tớch tất định LL.

Một phần của tài liệu GIÁO TRÌNH MÔN CHƯƠNG TRÌNH DỊCH (Trang 72 - 73)

C là tập xỏc định tất cả cỏc mục cú nghĩa đối với tất cả cỏc tiền tố khả tồn vỡ chỳng ta xuất phỏt từ mục [S’ > S] và xõy dựng cỏc mục cú nghĩa cho tất cả cỏc tiền tố khả tồn.

b. Thuật toỏn xõy dựng bảng phõn tớch cỳ phỏp LALR

2.4.1. Khụi phục lỗi trong phõn tớch tất định LL.

* Một lỗi được phỏt hiện trong phõn tớch LL khi:

- Ký hiệu kết thỳc nằm trờn đỉnh ngăn xếp khụng đối sỏnh được với ký hiệu đầu vào hiện tại.

- Mục M(A,a) trong bảng phõn tớch là lỗi (rỗng).

* Khắc phục lỗi theo kiểu trừng phạt là bỏ qua cỏc ký hiệu trờn xõu vào cho đến khi xuất hiện một ký hiệu thuộc tập ký hiệu đó xỏc định trước gọi là tập ký hiệu đồng bộ. Xột một số cỏch chọn tập đồng bộ như sau:

a) Đưa tất cả cỏc ký hiệu trong Follow(A) vào tập đồng bộ hoỏ của ký hiệu khụng kết thỳc A. Nếu gặp lỗi, bỏ qua cỏc từ tố của xõu vào cho đến khi gặp một phần tử của Follow(A) thỡ lấy A ra khỏi ngăn xếp và tiếp tục quỏ trỡnh phõn tớch.

b) Đưa tất cả cỏc ký hiệu trong First(A) vào tập đồng bộ hoỏ của ký hiệu khụng kết thỳc A. Nếu gặp lỗi, bỏ qua cỏc từ tố của xõu vào cho đến khi gặp một phần tử thuộc First(A) thỡ quỏ trỡnh phõn tớch được tiếp tục.

Vớ dụ: với vớ dụ trờn, ta thử phõn tớch xõu vào cú lỗi là “)id*+id” với tập đồng bộ hoỏ của cỏc ký hiệu khụng kết thỳc được xõy dựng từ tập First và tập Follow của ký hiệu đú.

Ngăn xếp Xõu vào Hành động

$E )id*+id$ M(E,)) = lỗi, bỏ qua ‘)’ để găp id ∈ First(E)

$E id*+id$ E->TE’

$E’T id*+id$ T->FT’

$E’T’F id*+id$ F->id

$E’T’id id*+id$ rỳt gọn id

$E’T’ *+id$ T’->*FT’

$E’T’F* *+id$ rỳt gọn *

$E’T’F +id$ M(F,+) = lỗi, bỏ qua. Tại đõy xảy ra hai trường hợp(ta chọn a): a).bỏ qua + vỡ id ∈ First(F)

b).bỏ qua F vỡ + ∈ Follow(F)

$E’T’F id$ F->id

$E’T’ $ T’->ε

$E’ $ E’->ε

$ $

Một phần của tài liệu GIÁO TRÌNH MÔN CHƯƠNG TRÌNH DỊCH (Trang 72 - 73)

Tải bản đầy đủ (DOC)

(158 trang)
w