Phân tích LL

Một phần của tài liệu ngôn ngữ lập trình và chương trình dịch (Trang 43 - 44)

- Phương pháp phân tích cơ bản (phương pháp phân tích quay lui: topdown, bottom – up) Phương pháp phân tích hiệu quả (phương pháp phân tích tất định: LL, LR).

2. CÁC PHƢƠNG PHÁP PHÂN TÍCH

2.3 Phân tích LL

Tử tưởng của phương pháp phân tích LL là khi ta triển khai một ký hiệu không kết thúc, lựa chọn cẩn thận các sản xuất như thế nào đó để tránh việc quay lui mất thời gian. Tức là phải có một cách nào đó xác định dực ngay lựa chọn đúng mà không phải thử các lựa chọn khác. Thông tin để xác định lựa chọn dựa vào những gì đã biết trạng thái và kí hiệu kết thúc hiện tại.

LL: là một trong các phương pháp phân tích hiệu quả, thuộc chiến lược phân tích topdown nhưng hiệu quả ở chỗ nó là phương pháp phân tích không quay lui.

- Bộ phân tích tất định: Các thuật toán phân tích có đặc điểm chung là xâu vào được quét từ trái sang phải và quá trình phân tích là hoàn toàn xác định, do đó ta

W = a1a2...an

Stack

ai ai+1 ... an $

Sản xuất A ->

Trên ngăn xếp chứa xâu y = , là vế phải của một sản xuất được bộ phân tích áp dụng để thu gọn và bước thu gọn này phải dẫn đến quá trình phân tích thành công thì là handle của chuỗi v (v là phần chuỗi còn lại trên input buffer).

Vậy nếu S =>*rm Aw =>rm w thì là handle của suy dẫn phải w

gọi là bộ phân tích tất định. (Phân tích topdown và bottom – up có phải là phân tích tất định không? – không do quá trình phân tích là không xác định).

L: left – to – right ( quét từ phải qua trái ) L : leftmosst – derivation (suy dẫn trái nhất); k là số ký hiệu nhìn trước để đưa ra quyết định phân tích.

Giả sử ký hiệu không kết thúc A có các sản xuất: A -> 1 | 2 | . . . | n thoả mãn tính chấ:t các xâu 1, 2, . . ., n suy dẫn ra các xâu với ký hiệu tại vị trí đầu tiên là các ký hiệu kết thúc khác nhau, khi đó chúng ta chỉ cần nhìn vào ký hiệu đầu vào tiếp theo sẽ xác định được cần khai triển A theo i nào. Nếu cần tới k ký hiệu đầu tiên thì mới phân biệt được các xâu 1, 2, . . ., n thì khi đó để chọn luật sản xuất nào cho khai triển A ta cần nhìn k ký hiệu đầu vào tiếp theo.

Văn phạm LL(k) là văn phạm cho phép xây dựng bộ phân tích làm việc tất định nếu bộ phân tích này được phép nhìn k kí hiệu vào nằm ngay bên phải của vị trí vào hiện tại.

Ngôn ngữ sinh ra bởi văn phạm LL(k) là ngôn ngữ LL(k). Thông thường chúng ta xét với k=1.

Một phần của tài liệu ngôn ngữ lập trình và chương trình dịch (Trang 43 - 44)

Tải bản đầy đủ (PDF)

(117 trang)