Mục có nghĩa(valid item)

Một phần của tài liệu ngôn ngữ lập trình và chương trình dịch (Trang 51)

- Phương pháp phân tích cơ bản (phương pháp phân tích quay lui: topdown, bottom – up) Phương pháp phân tích hiệu quả (phương pháp phân tích tất định: LL, LR).

2)Mục có nghĩa(valid item)

Một mục A 1. 2 gọi là mục có nghĩa(valid item) đối với tiền tố khả tồn

1 nếu tồn tại một dẫn xuất: S =>*rm Aw =>rm 1 2w

Tập tất cả các mục có nghĩa đối với tiền tố khả tồn gọi là tập I.

Một tập mục có nghĩa đối với một tiền tố khả tồn nói lên rất nhiều điều trong quá trình suy dẫn gạt - thu gọn: Giả sử quá trình gạt thu gọn đang ở trạng thái với ngăn xếp là x và phần ký hiệu đầu vào là v (*)

ngăn xếp đầu vào $x v$

Thế thì, quá trình phân tích tiếp theo sẽ phụ thuộc vào tập mục có nghĩa I của tiền tố khả tồn thuộc x. Với một mục [A-> 1. 2] I, cho chúng ta biết x có dạng

1, và quá trình phân tích phần còn lại w của xâu đầu vào nếu theo sản xuất A- > 1 2 sẽ được tiếp tục từ 2 của mục đó. Hành động gạt hay thu gọn sẽ phụ thuộc vào 2 là rỗng hay không. Nếu

2 = thì phải thu gọn 1 thành A, còn nếu 2 thì việc phân tích theo sản xuất

A 1 2 đòi hỏi phải sử dụng hành động gạt.

- Mọi quá trình phân tích tiếp theo của trạng thái (*) đều phụ thuộc vào các mục có nghĩa trong tập các mục có nghĩa I của tiền tố khả tồn x.

- Có thể có nhiều mục có nghĩa đối với một tiền tố x. Các mục này có thể có các hành động xung đột (bao gồm cả gạt và thu gọn), trong trường hợp này bộ phân tích sẽ phải dùng các thông tin dự đoán, dựa vào việc nhìn ký hiệu đầu vào tiếp theo để quyết định nên sử dụng mục có nghĩa nào với tiền tố x (tức là sẽ cho tương ứng gạt hay thu gọn). Nếu quá trình này cho những quyết định không xung đột (duy nhất) tại mọi trạng thái thì ta nói văn phạm đó phân tích được bởi thuật toán LR

- Tư tưởng của phương pháp phân tích LR là phải xây dựng được tập tất cả các mục có nghĩa đối với tất cả các tiền tố khả tồn.

Một phần của tài liệu ngôn ngữ lập trình và chương trình dịch (Trang 51)