Khụi phục lỗi trong phõn tớch LR.

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

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.

2.4.2.Khụi phục lỗi trong phõn tớch LR.

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

2.4.2.Khụi phục lỗi trong phõn tớch LR.

Một bộ phõn tớch LR sẽ phỏt hiện ra lỗi khi nú gặp một mục bỏo lỗi trong bảng action (chỳ ý sẽ khụng bao giờ bộ phõn tớch gặp thụng bỏo lỗi trong bảng goto). Chỳng ta cú thể thực hiện chiến lược khắc phục lỗi cố gắng cụ lập đoạn cõu chứa lỗi cỳ phỏp: quột dọc xuống ngăn xếp cho đến khi tỡm được một trạng thỏi s cú một hành động goto trờn một ký hiệu khụng kết thỳc A ngay sau nú. Sau đú bỏ đi khụng hoặc nhiều ký hiệu đầu vào cho đến khi gặp một ký hiệu kết thỳc a thuộc Follow(A), lỳc này bộ phõn tớch sẽ đưa trạng thỏi goto(s,A) vào ngăn xếp và tiếp tục quỏ trỡnh phõn tớch.

Phương phỏp phõn tớch bảng CYK (Cocke – Younger – Kasami)

- Giải thuật làm việc với tất cả cỏc VP PNC. Thời gian phõn tớch là: n3 (n là độ dài xõu vào cần phõn tớch), nếu văn phạm khụng nhập nhằng thỡ thờI gian phõn tớch là: n2.

- Điều kiện của thuật toỏn là văn phạm PNC ở dạng chuẩn chụmsky (CNF) và khụng cú ε sản xuất (sản xuất A →ε ) và cỏc kớ hiệu vụ ớch.

Giải thuật CYK:

- Tạo một hỡnh tam giỏc (mỗi chiều cú độ dài là n , n là độ dài của xõu). Thực hiện giải thuật:

Begin

1) For i:=1 to n do

∆ij = { A | A → a là một sản xuất và a là kớ hiệu thứ i trong w}; 2) For j:=2 to n do For i:=1 to (n – j +1) do Begin ∆ij = ∅; For k:=1 to (j -1) do ∆ij = ∆ij∪ { A | A → BC là một sản xuất; B ∈∆ik C∈∆i+k, j -k }; end; end;

Vớ dụ: Xột văn phạm chuẩn chụmsky

S → AB|BC; A → BA|a; B → CC|b; C → AB|a; (1) (2) (3) (4) (5) (6) (7) (8) Xõu vào w= baaba;

i j

b a a b a

B A,C A,C B A,C

S,A B S,C S,A

∅ B B

∅ S,A,C

b a a b a

B A,C A,C B A,C

S,A B S,C S,A

∅ B B

∅ S,A,C

S,A,C

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