Slide Chương trình dịch (UNIT7) - GV Nguyễn Thị Thu Hương

LI
lienhejb
0 lượt tải
3
0

Nội dung tài liệu

Trang 1

21/1/2010 Phân tích tiền định „ Tư tưởng chính của phân tích cú pháp trên xuống : Bài 7 … Bắt đầu từ gốc, phát triển xuống các nút cấp dưới Phân tích cú pháp tiền định … Chọn một sản xuất và thử xem có phù hợp với xâu vào không … Có thể quay lui „ Có thể tránh được quay lui? … Cho sản xuất A → α | β bộ phân tích cú pháp cần chọn giữa α và β „ Làm thế nào? … Cho ký hiệu không kết thúc A và ký hiệu xem trước t, sản xuất nào của A chắc chắn sinh ra một xâu bắt đầu bởi t? 1 2 Phân tích tiền định Phân tích tiền định „ Nếu có hai sản xuất: A→α⏐β , ta mong muốn có một phương pháp rõ ràng để chọn đúng sản „ Tính FIRST(X): xuất cần thiết …Nếu X là ký hiệu kết thúc FIRST(X)={X} „„ ĐịĐịnh nghnh nghĩĩa:a: ……NNếếu Xu X→ε→ε là mlà mộột st sảảnn xuxuấấtt thì thêmthì thêm εε vàovào FIRST(X) …Với α là một xâu chứa ký hiệu kết thúc và không kết thúc, x ∈ FIRST(α) nếu từ α có thể suy dẫn ra …Nếu X là ký hiệu không kết thúc và xγ (x chứa 0 hoặc 1 ký hiệu) X→Y1Y2...Yn là một sản xuất , thêm FIRST(Yi+1) vào FIRST(X) nếu FIRST(Yj) „ Nếu FIRST(α) và FIRST(β) không chứa ký chứa ε hiệu chung ta biết phải chọn A→α hay A→β khi đã xem trước một ký hiệu 3 4 goupee.com fb.com/groups/goupee 1

Trang 2

21/1/2010 Phân tích tiền định Tính FOLLOW „ Điều gì xảy ra nếu ta có sản xuất để chọn là …FOLLOW(S) chứa EOF A→α với α=ε hoặc α⇒*ε? Với các sản xuất dạng A→αBβ, mọi ký hiệu … „ Có thể mở rộngg nếu ta biết rằngg có một dạngg trong FIRST(trong FIRST(ββ) tr) trừừ εε tham gia vàotham gia vào câu mà ký hiệu đang xét xuấất hiện sau A FOLLOW(B) „ Định nghĩa: Với các sản xuất dạng A→αB hoặc … …Với A là ký hiệu không kết thúc, A→αBβ trong đó FIRST(β) chứa ε, x∈FOLLOW(A) nếu và chỉ nếu Scó thể suy dẫn ra αAxβ FOLLOW(B) chứa mọi ký hiệu của FOLLOW(A) 5 6 Phân tích tiền định Bảng phân tích tiền định „ Với các khái niệm … FIRST „ Dùng cho bộ sinh phân tích cú pháp … FOLLOW Căn cứ „ Ta có thể xây dựng bộ phân tích cú pháp mà „ khôngkhông đđòi hòi hỏỏi quay luii quay lui ……Ký hiKý hiệệuu đđang xétang xét „ Chỉ có thể xây dựng bộ phân tích cú pháp như …Ký hiệu đang ở đỉnh stack vậy cho những văn phạm đặc biệt „ Loại văn phạm như vậy bao gồm văn phạm một „ Quyết định số ngôn ngữ lập trình đơn giản, chẳng hạn …Thay thế ký hiệu không kết thúc KPL,PL/0, PÁSCAL-S …Chuyển con trỏ sang ký hiệu tiếp …Chấp nhận xâu 7 8 goupee.com fb.com/groups/goupee 2

Trang 3

21/1/2010 Ví dụ Bảng phân tích E→TE' E'→+TE'|ε „ Văn phạm: T→FT' + * ( ) id $ T'→*FT'|ε E E→TE' E→TE' F→(E) E' E'→+TE' E'→ε E'→ε FF→→idid TT TT→→FTFT' TT→→FTFT' T' T'→ε T'→*FT' T'→ε T'→ε FIRST(E) = FIRST(T) = FIRST(F) = {(, id} F F→(E) F→id FIRST(E') = {+, ε} + Đẩy FIRST(T') = {*, ε} * Đẩy FOLLOW(E) = FOLLOW(E') = {$, )} ( Đẩy FOLLOW(T) = FOLLOW(T') = {+, $, )} ) Đẩy FOLLOW(F) = {*, +, $, )} id Đẩy $ Nhận Văn phạm này có thể xây dựng bộ phân tích tiền định 9 10 Phân tích xâu vào id*id sử dụng bảng phân tích và stack Bước Stack Xâu vào Hành động kế tiếp 1 $E id*id$ E→TE' 2 $$E'T id*id$$ T→FT' 3 $E'T'F id*id$ F→id 4 $E'T'id id*id$ đẩy id 5 $E'T' *id$ T'→*FT' 6 $T'F* *id$ đẩy * 7 $T'F id$ F→id 8 $T'id id$ đẩy id 9 $T' $ T'→ε 10 $ $ nhận 11 goupee.com fb.com/groups/goupee 3

Hiển thị 3 trang đầu. Tải tài liệu để xem đầy đủ.

Bình luận (0)

Đăng nhập để tham gia bình luận

Chưa có bình luận nào. Hãy là người đầu tiên!