Bai giang 5 phan tich cu phap hieu qua

41 910 0
Bai giang 5   phan tich cu phap hieu qua

Đ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

Bài giảng – Các phương pháp phân tích hiệu Nguyễn Phương Thái Bộ môn Khoa học Máy tính http://www.coltech.vnu.vn/~thainp/ Phân tích Top-Down, Bottom-up Ưu điểm:  Đơn giản  Phân tích cho toàn lớp VPPNC  Phân tích ngôn ngữ nhập nhằng Nhược điểm:  Quá chậm (cn) phải quay lui Tìm đường Phân tích hiệu (tất định) Hi sinh (nhược điểm):  Lớp ngôn ngữ bé PNC  Bắt buộc không nhập nhằng Ưu điểm:  Rất nhanh (cn) Đặc điểm phân tích tất định      Quét xâu vào từ phải sang trái Quá trình phân tích hoàn toàn xác định Không dùng quay lui Dựa vào trạng thái ký hiệu kết thúc để xác định luật Các luật phải thiết kế đặc biệt Các lớp văn phạm   Văn phạm LL(k) - văn phạm cho phép xây dựng phân tích làm việc tất định phân tích phép nhìn k ký hiệu vào nằm bên phải vị trí vào thời Văn phạm LR(k) - văn phạm cho phép xây dựng phân tích làm việc tất định phân tích phép nhìn k ký hiệu vào nằm vượt vị trí vào thời Phân tích LL Chương trình điều khiển X ký hiệu đỉnh ngăn xếp, a ký hiệu vào  Nếu X = a = $: dừng tuyên bố thành công (cả xâu vào lẫn ngăn xếp rỗng)  Nếu X = a ≠ $: lấy X khỏi ngăn xếp, dịch trỏ vào sang ký hiệu vào (đã khai triển đến khớp với xâu vào)  Nếu X biến: xét ô M [X, a] Nếu:   Nếu M[X, a] = {X→UVW} thay X nằm đỉnh ngăn xếp WVU (U nằm đỉnh) (thực phép mở rộng cây) Nếu M[X, a] = lỗi (vị trí lỗi), gọi hàm khôi phục Thuật toán Đặt trỏ ip đến ký tự xâu w$ repeat Giả sử X ký hiệu đỉnh ngăn xếp a ký hiệu vào tiếp theo; if X ký hiệu kết thúc $ then if X = a then pop X từ đỉnh ngăn xếp loại bỏ a khỏi xâu vào else ERROR( ); else { X ký hiệu kết thúc } if M[X, a] = X → Y1Y2 Yk then begin pop X từ ngăn xếp; push Yk,Yk-1, Y1 vào ngăn xếp, với Y1 đỉnh; đưa sản xuất X→ Y1Y2 Yk end else ERROR( ); until X = $; { ngăn xếp rỗng } Tìm đường 10 Lập bảng phân tích Cho văn phạm G  Giả sử A→α sản xuất với a thuộc FIRST(α)  Mỗi phân tích gặp A đỉnh ngăn xếp a ký hiệu vào phân tích mở rộng A α (bảng M[A, a] = A→α)  Rắc rối: α=ε α⇒*ε Mở rộng A α nếu:   ký hiệu vào thuộc FOLLOW(A), ký hiệu vào $ $ thuộc FOLLOW(A) 27 Thuật toán 5.2 Thuật toán 5.2 Xây dựng bảng phân tích tất định LL  Vào: Văn phạm G  Ra: Bảng phân tích M 28 Thuật toán 5.2 Đối với sản xuất A→α, thực bước bước Đối với ký hiệu kết thúc a thuộc FIRST(α), thêm A→α vào ô M[A, a] Nếu ε thuộc FIRST(α), thêm A→α vào M[A, b] b thuộc FOLLOW(A) Nếu ε thuộc FIRST(α) $ thuộc FOLLOW(A), thêm A→α vào M[A, $] Đặt tất vị trí chưa định nghĩa lại bảng lỗi 29 Ví dụ  Luật E→TE’ :    FIRST(TE') = FIRST(T) = {(, a} Cả hai ô M[E, (] M[E, a] đặt E→TE’ (theo mục 2, thuật toán 5.2) Luật E’→+TE’   FIRST(+TE’) = { + } Ô M[E', +] đặt E'→+TE' 30 Ví dụ (tiếp)  Luật E’→ε      FIRST (ε) = {ε } Phải dùng FOLLOW (E’) thay FOLLOW (E’) = { ), $} Cả hai ô M[E’, )] M[E, $] đặt E’→ε Cuối bảng phân tích ví dụ 5.1 31 Văn phạm LL(k) LL(1)    Chữ "L" đầu tiên: quét từ trái sang phải (leftto-right) Chữ "L" tiếp theo: suy dẫn đưa suy dẫn trái (leftmost derivation) k số việc nhìn trước k ký tự để định hành động phân tích bước Thực tế hay dùng k = 1, phân tích LL(1) thường viết tắt LL không sợ hiểu nhầm 32 Văn phạm LL(1)    Khi áp dụng thuật toán 5.2 cho số văn phạm, có số vị trí bảng phân tích có giá trị (tức số sản xuất nhiều 1) Ví dụ, văn phạm G đệ quy trái nhập nhằng phải có vị trí bảng Định nghĩa 5.3: Văn phạm LL(1) văn phạm xây dựng bảng phân tích theo thuật toán 5.2 có ô định nghĩa nhiều lần Văn phạm LL(1) không bị nhập nhằng đệ quy trái 33 Điều kiện để VP LL(1) Nếu A→α | β hai sản xuất phân biệt G điều kiện sau phải thỏa mãn: Không có ký hiệu kết thúc a mà α β suy dẫn xâu bắt đầu a Nhiều α β suy dẫn xâu rỗng Nếu β⇒* ε α không suy dẫn xâu bắt đầu ký hiệu kết thúc b thuộc FOLLOW(A) 34 Điều kiện để VP LL(1)  Các điều kiện tương đương với biểu thức đây: FIRST(α ) ⊕ FOLLOW(A) ∩ FIRST (β) ⊕ FOLLOW(A) = ∅  Cách đơn giản: lập bảng phân tích dựa vào định nghĩa 5.3 kiểm tra 35 Khôi phục lỗi Một lỗi phát trình phân tích tất định khi:  Ký hiệu kết thúc đỉnh ngăn xếp không với ký hiệu vào tiếp theo;  Vị trí bảng phân tích M[A, a] với biến A đỉnh ngăn xếp ký hiệu vào a, lại rỗng hay điền dấu hiệu báo lỗi (error) 36 Chiến lược khôi phục lỗi   Thường theo kiểu trừng phạt: bỏ quahiệu xâu vào xuất từ tố thuộc tập từ khoá xác định trước (gọi tập từ khoá đồng bộ) Tính hiệu phương pháp phụ thuộc vào việc chọn tập đồng Các tập chọn cho phân tích vượt qua lỗi nhanh chóng 37 Chọn tập đồng synch(A) Khởi đầu: đưa FOLLOW(A) vào synch(A) Nếu có lỗi bỏ qua từ tố phần tử FOLLOW(A) xuất lấy A khỏi ngăn xếp, lúc trình phân tích tiếp tục Tăng cường: thêm từ khoá bắt đầu câu lệnh vào tập đồng ký hiệu không kết thúc sinh biểu thức Thêm ký hiệu FIRST(A) nhằm tiếp tục phân tích theo A ký hiệu FIRST(A) xuất đầu vào Nếu ký hiệu không kết thúc sinh xâu rỗng sản xuất suy dẫn sử dụng ngầm định Dùng để giảm số lượng ký hiệu không kết thúc phải xem xét lúc khắc phục lỗi Nếu ký hiệu kết thúc nằm đỉnh ngăn xếp không đúng: loại bỏ ký hiệu kết thúc này, đưa thông báo tiếp tục phân tích Phương pháp tạo nên tập đồng từ tố có chứa tất từ tố khác 38 Ví dụ:  synch = {+, *, ), $ } 39 Ví dụ:   Xâu vào: )a*+a 40 Bài tập Cho văn phạm với luật sản xuất sau: E→aEbE | bEaE | ε Văn phạm có văn phạm LL(1) không? Tại sao? Cho văn phạm với luật sản xuất sau: E→TE’; E'→+E | ε; T→FT’; T’→T|ε; F→PF’; F’→*F’| ε; P→( E ) | a | b | ε đó, P đỉnh  Tính FIRST FOLLOW;  Văn phạm LL(1) ?  Xây dựng bảng phân tích LL1 41 ...Phân tích Top-Down, Bottom-up Ưu điểm:  Đơn giản  Phân tích cho toàn lớp VPPNC  Phân tích ngôn ngữ nhập nhằng Nhược điểm:  Quá chậm (cn) phải quay lui Tìm đường Phân tích... hiệu vào $ $ thuộc FOLLOW(A) 27 Thuật toán 5. 2 Thuật toán 5. 2 Xây dựng bảng phân tích tất định LL  Vào: Văn phạm G  Ra: Bảng phân tích M 28 Thuật toán 5. 2 Đối với sản xuất A→α, thực bước bước... pop X từ ngăn xếp; push Yk,Yk-1, Y1 vào ngăn xếp, với Y1 đỉnh; đưa sản xuất X→ Y1Y2 Yk end else ERROR( ); until X = $; { ngăn xếp rỗng } Tìm đường 10 Ví dụ 11 Ví dụ - phân tích: a+a*a 12 Ví dụ

Ngày đăng: 22/12/2016, 12:40

Từ khóa liên quan

Mục lục

  • Bài giảng 5 – Các phương pháp phân tích hiệu quả

  • Phân tích Top-Down, Bottom-up

  • Tìm đường

  • Phân tích hiệu quả (tất định)

  • Đặc điểm phân tích tất định

  • Các lớp văn phạm

  • Phân tích LL

  • Chương trình điều khiển

  • Thuật toán

  • Slide 10

  • Ví dụ

  • Ví dụ - phân tích: a+a*a

  • Slide 13

  • Nhận xét

  • Tính First và Follow

  • Định nghĩa

  • Slide 17

  • Tính First()

  • Tính First(A)

  • Slide 20

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

Tài liệu liên quan