CHƯƠNG TRÌNH DỊCH bài 7 PHÂN TÍCH cú PHÁP TIỀN ĐỊNH

3 481 0
CHƯƠNG TRÌNH DỊCH   bài 7 PHÂN TÍCH cú PHÁP TIỀN ĐỊNH

Đang tải... (xem toàn văn)

Thông tin tài liệu

21/1/2010 Phân tích tiền định „ Bài Phân tích cú pháp tiền định „ „ Tư tưởng phân tích cú pháp xuống : … Bắt đầu từ gốc, phát triển xuống nút cấp … Chọn sản xuất thử xem có phù hợp với xâu vào không … Có thể quay lui Có thể tránh quay lui? … Cho sản xuất A → α | β phân tích cú pháp cần chọn α β Làm nào? … Cho ký hiệu không kết thúc A ký hiệu xem trước t, sản xuất A chắn sinh xâu bắt đầu t? 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ó phương pháp rõ ràng để chọn sản xuất cần thiết „ Định nghĩa: „ „ … Nếu X ký hiệu kết thúc FIRST(X)={X} … Nếu X→ε sản xuất thêm ε vào FIRST(X) … Nếu X ký hiệu không kết thúc X→Y1Y2 Yn sản xuất , thêm FIRST(Yi+1) vào FIRST(X) FIRST(Yj) chứa ε α xâu chứa ký hiệu kết thúc không kết thúc, x ∈ FIRST(α) từ α suy dẫn xγ (x chứa ký hiệu) … Với „ Nếu FIRST(α) FIRST(β) không chứa ký hiệu chung ta biết phải chọn A→α hay A→β xem trước ký hiệu Tính FIRST(X): 21/1/2010 Phân tích tiền định Tính FOLLOW Điều xảy ta có sản xuất để chọn A→α với α=ε α⇒*ε? „ Có thể mở rộng g ta biết g có dạng g câu mà ký hiệu xét xuất ấ sau A „ Định nghĩa: …FOLLOW(S) chứa EOF …Với sản xuất dạng A→αBβ, ký hiệu FIRST(β) trừ ε tham gia vào FOLLOW(B) …Với sản xuất dạng A→αB A→αBβ FIRST(β) chứa ε, FOLLOW(B) chứa ký hiệu FOLLOW(A) „ … Với A ký hiệu không kết thúc, x∈FOLLOW(A) Scó thể suy dẫn αAxβ Phân tích tiền định „ Bảng phân tích tiền định Với khái niệm Dùng cho sinh phân tích cú pháp „ Căn … FIRST … FOLLOW „ „ „ „ Ta xây dựng phân tích cú pháp mà không đòi hỏi quay lui Chỉ xây dựng phân tích cú pháp cho văn phạm đặc biệt Loại văn phạm bao gồm văn phạm số ngôn ngữ lập trình đơn giản, chẳng hạn KPL,PL/0, PÁSCAL-S … Ký hiệu xét … Ký hiệu đỉnh stack „ Quyết định … Thay ký hiệu không kết thúc trỏ sang ký hiệu tiếp … Chấp nhận xâu … Chuyển 21/1/2010 Ví dụ „ Văn phạm: Bảng phân tích E→TE' E'→+TE'|ε T→FT' T'→*FT'|ε F→(E) F→id + E E' E'→+TE' T T'→ε T' F Đẩy + * ( ) id $ FIRST(E) = FIRST(T) = FIRST(F) = {(, id} FIRST(E') = {+, ε} FIRST(T') = {*, ε} FOLLOW(E) = FOLLOW(E') = {$, )} FOLLOW(T) = FOLLOW(T') = {+, $, )} FOLLOW(F) = {*, +, $, )} Văn phạm xây dựng phân tích tiền định * T'→*FT' ( E→TE' T→FT' T→FT F→(E) ) E'→ε T'→ε id E→TE' T→FT' T→FT F→id $ E'→ε T'→ε Đẩy Đẩy Đẩy Đẩy Nhận 10 Phân tích xâu vào id*id sử dụng bảng phân tích stack Bước Stack $E $E'T $ $E'T'F $E'T'id $E'T' $T'F* $T'F $T'id $T' 10 $ Xâu vào id*id$ id*id$ $ id*id$ id*id$ *id$ *id$ id$ id$ $ $ Hành động E→TE' T→FT' F→id đẩy id T'→*FT' đẩy * F→id đẩy id T'→ε nhận 11 ... Scó thể suy dẫn αAxβ Phân tích tiền định „ Bảng phân tích tiền định Với khái niệm Dùng cho sinh phân tích cú pháp „ Căn … FIRST … FOLLOW „ „ „ „ Ta xây dựng phân tích cú pháp mà không đòi hỏi... phạm xây dựng phân tích tiền định * T'→*FT' ( E→TE' T→FT' T→FT F→(E) ) E'→ε T'→ε id E→TE' T→FT' T→FT F→id $ E'→ε T'→ε Đẩy Đẩy Đẩy Đẩy Nhận 10 Phân tích xâu vào id*id sử dụng bảng phân tích stack... xây dựng phân tích cú pháp cho văn phạm đặc biệt Loại văn phạm bao gồm văn phạm số ngôn ngữ lập trình đơn giản, chẳng hạn KPL,PL/0, PÁSCAL-S … Ký hiệu xét … Ký hiệu đỉnh stack „ Quyết định … Thay

Ngày đăng: 11/11/2015, 22:59

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan