Danh mục

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

Số trang: 3      Loại file: pdf      Dung lượng: 152.99 KB      Lượt xem: 13      Lượt tải: 0    
Jamona

Phí tải xuống: miễn phí Tải xuống file đầy đủ (3 trang) 0
Xem trước 2 trang đầu tiên của tài liệu này:

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

Tài liệu được xem nhiều: