Trong bài giảng 4, người học sẽ tìm hiểu về phân tích cú pháp và các phương pháp phân tích cơ bản. Thông qua bài giảng người học có thể nắm bắt được một số phương pháp phân tích cú pháp như phân tích Top-Down và phân tích Bottom-Up, biết đươc một số khó khăn khi tiến hành phân tích cú pháp,... Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Chương trình dịch: Bài giảng 4 - Nguyễn Phương Thái
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
Nguyễn Phương Thái
Bộ môn Khoa học Máy tính
http://www.coltech.vnu.vn/~thainp/
1
Bài toán
Đầu vào: câu vào chứa toàn các từ tố
Phân tách câu vào thành các phần theo
văn phạm và biểu diễn cấu trúc này
bằng một cây (gọi là cây phân tích)
hoặc theo một cấu trúc nào đó tương
đương với cây.
2
Bài toán (tiếp)
Chæång yãu cáö u cáy
trçnh láú
y tæìtäú phán
nguäön Phán têch têch Phán têch
Phán têch
ngæî
tæìvæû
ng cuïphaïp
nghéa
tæìtäú
Baíng kyï
hiãûu
3
Văn phạm
Mọi ngôn ngữ lập trình đều có các luật mô tả các
cấu trúc cú pháp.
Một chương trình nguồn viết đúng phải tuân theo các
luật mô tả này tức là viết đúng văn phạm (hay đúng
ngữ pháp).
Văn phạm của một ngôn ngữ lập trình có cấu trúc có
thể mô tả bằng văn phạm phi ngữ cảnh và biểu
diễn theo ký pháp BNF hoặc đồ thị chuyển.
4
Các phương pháp phân tích
Cơ sở của phân tích cú pháp đối với lớp
VPPNC là đị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 được định lý này bằng cách đưa ra các
giải thuật cài đặt trên thực tế, ví dụ như:
Thuật toán phân tích TopDown.
Thuật toán phân tích Bottom Up.
Thuật toán phân tích CYK (CokeYounger
Kasami).
Thuật toán phân tích Earley.
5
Các phương pháp phân tích
(tiếp)
Việc phân tích một câu là khôi phục
hoặc xây dựng suy dẫn sinh ra nó, do
đó ta sẽ dựng được cây suy dẫn.
Thông thường trong các thuật toán
phân tích, ta hay tiến hành từ một phía
của câu, kiểm tra lần lượt các thành
phần của câu đó cho đến hết (đa số từ
trái sang phải).
6
Hai chiến lược phân tích chính
Chiến lược phân tích topdown (trên xuống): cho một
văn phạm phi ngữ cảnh G = ( , , P, S) và một câu
cần phân tích w. Ta xuất phát từ điểm khởi đầu,
nghĩa là từ S, áp dụng các suy dẫn trái, tiến từ trái
qua phải thử tạo ra câu đưa vào phân tích w.
Chiến lược phân tích bottomup (dưới lên): Quá trình
ngược lại với phân tích topdown, xuất phát từ chính
câu vào phân tích w, bằng cách áp dụng thu gọn các
suy dẫn phải, tiến hành từ trái qua phải để đi tới ký
hiệu đầu S của văn phạm.
7
Hai chiến lược phân tích chính
(tiếp)
Điều kiện để các thuật toán trên là dừng như
sau:
Phân tích topdown (phân tích trái) là dừng
khi và chỉ khi G không có đệ quy trái.
Phân tích bottomup (phân tích phải) là dừng
khi và chỉ khi G không chứa suy dẫn A=>+ A
và không có sản xuất B (sản xuất rỗng).
8
Khó khăn khi phân tích
Gặp các luật có nhiều lựa chọn ở vế phải như:
A 1 | 2 | 3 ......... | k, k 2
Giải quyết: có hai chiến lược:
1. Phân tích quay lui (backtrack): ta thử lần lượt các i
(1 i k) để tìm i thích hợp. Rất tốn thời gian.
2. Phân tích không quay lui (withoutbacktrack). 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 duy nhất thích hợp mà không cần phải thử
các sản xuất khác. Các phương pháp phân tích như
vậy gọi là phân tích tất định (deterministic parsing).
9
Phân tích TopDown
Chuẩn bị:
Với một VPPNC cho trước, đánh dấu mọi lựa
chọn trong từng sản xuất. Ví dụ: nếu các sản
xuất dạng S aSbS | aS | c thì aSbS là lựa
chọn thứ nhất, aS là lựa chọn thứ hai và c là
lựa chọn cuối của sản xuất S.
Dùng một con trỏ chỉ đến xâu vào. Ký hiệu
trên xâu vào do con trỏ chỉ đến gọi là ký hiệu
vào hiện tại. Vị trí đầu tiên của con trỏ là ký
hiệu bên trái nhất của xâu vào.
10
Phân tích TopDown (tiếp)
Tiến hành các bước đệ quy sau:
Nếu nút đang xét là một nút ký hiệu không kết thúc A
thì lấy lựa chọn đầu tiên, ký hiệu là X1...Xk. Lại lấy
nút X1 làm nút đang xét. Trường hợp k = 0 (sản xuất
) thì lấy nút ngay bên phải A làm nút đang xét.
Nếu nút đang xét là nút ký hiệu kết thúc a, thì so
sánh nó với ký hiệu vào hiện tại:
Nếu giống nhau thì lấy nút ngay bên trái a làm nút đang xét
và chuyển con trỏ xâu vào sang bên phải một ký hiệu.
Nếu a không giống thì quay lại nút do sản xuất trước tạo ra,
điều chỉnh lại con trỏ xâu vào nếu cần thiết, sau đó ta lại
thử lựa chọn tiếp theo. Nếu không còn lựa chọn nào nữa thì
lại qua lại nút trước đó và cứ như vậy.
11
Ví dụ
VPPNC G=( , , P, S) (a) S
P: S aSbS | aS | c
w =aacbc a S b S
a S b S
c c
12
Ví dụ
S
VPPNC G=( , , P,
S)
P: S aSbS | aS | c a S b S
w =aacbc
a S
c
c
13
HaìGiang Cao Bàò
ng
Lai Cháu
Thaïi Nguyãn
Sån La ...
Bài giảng Chương trình dịch: Bài giảng 4 - Nguyễn Phương Thái
Số trang: 20
Loại file: ppt
Dung lượng: 443.50 KB
Lượt xem: 15
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Tìm kiếm theo từ khóa liên quan:
Chương trình dịch Bài giảng Chương trình dịch Phân tích cú pháp Phương pháp phân tích cú pháp Phân tích Top-Down Phân tích Bottom-UpTài liệu có liên quan:
-
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 242 0 0 -
Bài giảng Lập trình C căn bản: Chương 2 - Phạm Thế Bảo
31 trang 98 0 0 -
Bài giảng Phân tích vĩ mô và ngành - Lê Văn Lâm
23 trang 38 0 0 -
Giáo trình Lập trình nâng cao: Phần 1 - Nguyễn Văn Vinh
126 trang 36 0 0 -
186 trang 34 0 0
-
Tập bài giảng Chương trình dịch
218 trang 33 0 0 -
Bài giảng Điện tử tin học lớp 11: Bài 1
9 trang 33 0 0 -
Nhập môn Chương trình dịch - Bài 1
17 trang 31 0 0 -
Bài giảng Thực hành chương trình dịch: Bài 5 - Phạm Đăng Hải
66 trang 31 0 0 -
22 trang 30 0 0