Bài giảng Xây dựng chương trình dịch: Bài 7 - Nguyễn Thị Thu Hương

3 12 0
Bài giảng Xây dựng chương trình dịch: Bài 7 - Nguyễn Thị Thu Hương

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

Thông tin tài liệu

Bài giảng Xây dựng chương trình dịch - Bài 7: Phân tích cú pháp tiền định trình bày các nội dung: Phân tích tiền định, tính FOLLOW, bảng phân tích tiền định. Đây là một tài liệu tham khảo hữu ích dành cho các bạn sinh viên Công nghệ thông tin dùng làm tài liệu học tập và nghiên cứ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 ... … 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... 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... đặ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

Ngày đăng: 08/05/2021, 18:02

Từ khóa liên quan

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

Tài liệu liên quan