Phân tích cú pháp và các phương pháp phân tích cơ bản

20 468 0
Phân tích cú pháp và các phương pháp phân tích cơ bản

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin

Bài giảng - Phân tích cú pháp phương pháp phân tích Nguyễn Phương Thái Bộ mơn Khoa học Máy tính Bài tốn   Đầu vào: câu vào chứa toàn từ tố Phân tách câu vào thành phần theo văn phạm biểu diễn cấu trúc (gọi phân tích) theo cấu trúc tng ng vi cõy Bi toỏn (tip) Chổồng trỗnh ngưn Phán têch tỉì vỉûng u cáưu láúy tỉì täú tỉì täú Phán têch cụ phạp cáy phán têch Phán têch ngỉỵ nghéa Bng k hiãûu Văn phạm    Mọi ngơn ngữ lập trình có luật mô tả cấu trúc cú pháp Một chương trình nguồn viết phải tn theo luật mơ tả - tức viết văn phạm (hay ngữ pháp) Văn phạm ngôn ngữ lập trình có cấu trúc mơ tả văn phạm phi ngữ cảnh biểu diễn theo ký pháp BNF đồ thị chuyển Các phương pháp phân tích Cơ sở phân tích cú pháp lớp VPPNC định lý Bài toán thành viên với ngôn ngữ phi ngữ cảnh Người ta chứng minh định lý cách đưa giải thuật cài đặt thực tế, ví dụ như:  Thuật tốn phân tích Top-Down  Thuật tốn phân tích Bottom - Up  Thuật tốn phân tích CYK (Coke-YoungerKasami)  Thuật tốn phân tích Earley Các phương pháp phân tích (tiếp)   Việc phân tích câu khôi phục xây dựng suy dẫn sinh nó, ta dựng suy dẫn Thơng thường thuật tốn phân tích, ta hay tiến hành từ phía câu, kiểm tra thành phần câu hết (đa số từ trái sang phải) Hai chiến lược phân tích   Chiến lược phân tích top-down (trên xuống): cho văn phạm phi ngữ cảnh G = (Σ, ∆, P, S) câu cần phân tích w Ta xuất phát từ điểm khởi đầu, nghĩa từ S, áp dụng suy dẫn trái, tiến từ trái qua phải thử tạo câu đưa vào phân tích w Chiến lược phân tích bottom-up (dưới lên): Q trình ngược lại với phân tích top-down, xuất phát từ câu vào phân tích w, cách áp dụng thu gọn suy dẫn phải, tiến hành từ trái qua phải để tới ký hiệu đầu S văn phạm + ⇒ Hai chiến lược phân tích (tiếp) Điều kiện để thuật tốn dừng sau:  Phân tích top-down (phân tích trái) dừng G khơng có đệ quy trái  Phân tích bottom-up (phân tích phải) dừng G không chứa suy dẫn A=>+ A khơng có sản xuất B→ε (sản xuất rỗng) Khó khăn phân tích Gặp luật có nhiều lựa chọn vế phải như: A→ α1 | α2 | α3 | αk, k ≥  Giải quyết: có hai chiến lược: Phân tích quay lui (backtrack): ta thử αi (1 ≤ i ≤ k) để tìm αi thích hợp Rất tốn thời gian Phân tích khơng quay lui (without-backtrack) Trong việc tìm sản xuất thích hợp, ta biết cách xác định sản xuất thích hợp mà không cần phải thử sản xuất khác Các phương pháp phân tích gọi phân tích tất định (deterministic parsing)  Phân tích Top-Down Chuẩn bị:  Với VPPNC cho trước, đánh dấu lựa chọn sản xuất Ví dụ: sản xuất dạng S→aSbS | aS | c aSbS lựa chọn thứ nhất, aS lựa chọn thứ hai c lựa chọn cuối sản xuất S  Dùng trỏ đến xâu vào Ký hiệu xâu vào trỏ đến gọi ký hiệu vào Vị trí trỏ ký hiệu bên trái xâu vào 10 Phân tích Top-Down (tiếp) Tiến hành bước đệ quy sau:  Nếu nút xét nút ký hiệu khơng kết thúc A lấy lựa chọn đầu tiên, ký hiệu X1 Xk Lại lấy nút X1 làm nút xét Trường hợp k = (sản xuất ε) lấy nút bên phải A làm nút xét  Nếu nút xét nút ký hiệu kết thúc a, so sánh với ký hiệu vào tại:   Nếu giống lấy nút bên trái a làm nút xét chuyển trỏ xâu vào sang bên phải ký hiệu Nếu a không giống quay lại nút sản xuất trước tạo ra, điều chỉnh lại trỏ xâu vào cần thiết, sau ta lại thử lựa chọn Nếu khơng cịn lựa chọn lại qua lại nút trước 11 Ví dụ    VPPNC G=(Σ, ∆, P, S) P: S→aSbS | aS | c w =aacbc 12 Ví dụ    VPPNC G=(Σ, ∆, P, S) P: S→aSbS | aS | c w =aacbc 13 14 Phân tích Bottom-Up   Ngược lại với phương pháp top-down: cố gắng xây dựng thành cách hướng lên gốc Phân tích bottom-up gọi phân tích gạt thu gọn (shift-reduce parsing) 15 Ví dụ   S→AB, A→ab, B→aba ababa 16 Thời gian, nhớ độ phức tạp top-down & bottom-up   Với xâu vào w có độ dài n, độ phức tạp thuật tốn cn Hình dung:     c = 3, n = 20 3n = 320 = tỷ Với máy tính có khả thực 1000 phép xét từ tố giây, tổng thời gian cần để phân tích câu lệnh 3tỷ / 1000/60/60 > 80 Nếu máy tính có khả xử lý gấp 10 lần (10.000 từ tố giây) cần đến để xử lý xong câu lệnh 17 Phát lỗi    Nếu chương trình dịch phải dịch chương trình máy tính viết thiết kế hoạt động đơn giản Một chương trình dịch tốt phải phát hiện, định vị, phân loại tất lỗi để giúp đỡ người viết Người thiết kế chương trình dịch phải tự định bắt báo lỗi 18 Phát lỗi (tiếp) Giai đoạn phân tích cú pháp phát khắc phục nhiều lỗi do:  Nhiều loại lỗi khác đồng thời lỗi cú pháp Ví dụ lỗi chuỗi từ tố từ phân tích từ vựng khơng theo thứ tự luật văn phạm ngôn ngữ lập trình  Nhờ xác phương pháp phân tích 19 Các chiến lược phục hồi lỗi     Phục hồi kiểu trừng phạt Khôi phục cụm từ Gia cố luật (sản xuất) hay gặp lỗi Chỉnh lý toàn cục 20 ... Thuật tốn phân tích Top-Down  Thuật tốn phân tích Bottom - Up  Thuật tốn phân tích CYK (Coke-YoungerKasami)  Thuật tốn phân tích Earley Các phương pháp phân tích (tiếp)   Việc phân tích câu... ký pháp BNF đồ thị chuyển Các phương pháp phân tích Cơ sở phân tích cú pháp lớp VPPNC định lý Bài tốn thành viên với ngơn ngữ phi ngữ cảnh Người ta chứng minh định lý cách đưa giải thuật cài đặt...  Phân tích top-down (phân tích trái) dừng G khơng có đệ quy trái  Phân tích bottom-up (phân tích phải) dừng G khơng chứa suy dẫn A=>+ A khơng có sản xuất B→ε (sản xuất rỗng) Khó khăn phân tích

Ngày đăng: 22/10/2014, 19:07

Từ khóa liên quan

Mục lục

  • Bài giảng 4 - Phân tích cú pháp và các phương pháp phân tích cơ bản

  • Bài toán

  • Bài toán (tiếp)

  • Văn phạm

  • Các phương pháp phân tích

  • Các phương pháp phân tích (tiếp)

  • Hai chiến lược phân tích chính

  • Hai chiến lược phân tích chính (tiếp)

  • Khó khăn khi phân tích

  • Phân tích Top-Down

  • Phân tích Top-Down (tiếp)

  • Ví dụ

  • Slide 13

  • Slide 14

  • Phân tích Bottom-Up

  • Slide 16

  • Thời gian, bộ nhớ và độ phức tạp của top-down & bottom-up

  • Phát hiện lỗi

  • Phát hiện lỗi (tiếp)

  • Các chiến lược phục hồi lỗi

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

Tài liệu liên quan