Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 49 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
49
Dung lượng
413 KB
Nội dung
IT4073:NGÔN NGỮ PHƯƠNG PHÁP DỊCH Phạm Đăng Hải haipd@soict.hut.edu.vn Chương 2: Phân tích từ vựng Nhiệm vụ phân tích từ vựng Biểu thức quy Ơ tơ mát hữu hạn Phân tích từ vựng ngôn ngữ PL/0 04/02/14 Nhiệm vụ phân tích Mục đích & Nhiệm vụ • Mục đích: – Tìm chuỗi dài ký tự đầu vào, ký tự tương ứng với từ tố trả từ tố • Nhiệm vụ – Duyệt ký tự văn nguồn • Loại bỏ ký tự khơng cần thiết dấu cách, thích, – Xây dựng từ vựng từ ký tự đọc – Nhận dạng từ tố gửi tới pha tiếp Nhận biết từ tố gồm – Nhận biết từ khóa, tên người dùng định nghĩa – Nhận biết số, chuỗi, ký tự – Nhận biết ký tự đặc biệt (+,*, ), ký hiệu kép (:=,!=, ) 04/02/14 Nhiệm vụ phân tích Từ vựng Từ tố • Từ vựng (Lexeme) – Là đơn vị nhỏ ngơn ngữ lập trình • Được coi ký hiệu bảng chữ ngôn ngữ – Được xây dựng từ ký tự ASCII • Từ tố (Token) – Là thuật ngữ dùng từ vựng có ý nghĩa cú pháp • Có thể coi từ vựng từ cụ thể từ điển: “hơm nay”, “trời”, “đẹp”; cịn từ tố loại từ: “trạng từ”, “danh từ”, “tính từ”, 04/02/14 Nhiệm vụ phân tích Từ tố→Ví dụ pos := start + 10 * size; • “pos”, “start”, “size”, “+”, “10”, “*”,”:=“, “;” từ vựng • “pos”, “start”, “size”, → từ vựng thuộc lớp từ tố tên (ident) • ”:=“→ từ vựng từ tố gán (assign) • “10” → từ vựng từ tố số nguyên (number) • “+” → từ vựng từ tố cộng (plus) • “*” → từ vựng từ tố nhân (times) • “;” → từ vựng từ tố chấm phẩy (semicolon) 04/02/14 Nhiệm vụ phân tích Từ tố→Chú ý • Các từ tố Ident, number, plus, assign, người viết trình dịch tự định nghĩa để dễ dàng cho việc mã hóa chương trình Đây việc số hóa ký hiệu • Một từ tố ứng với tập từ vựng khác nên cần thêm số thơng tin khác để biết cụ thể từ vựng – Các chuỗi “19”, “365” chuỗi số, có từ tố “number”, sinh mã cần phải biết rõ giá trị 19 hay 365 • Bộ phân tích từ vựng khơng nhận dạng từ tố mà cịn phải biết thuộc tính tương ứng – Từ tố tác động đến phân tích cú pháp – Thuộc tính sử dụng sinh mã 04/02/14 Nhiệm vụ phân tích Thực Chương trình nguồn Phân tích từ vựng Token getToken() Phân tích cú pháp Bảng ký hiệu • Thực lặp dựa vào yêu cầu từ ptcp – Bộ ptcp cần từ tố gọi getToken() – Nhận y/cầu, pttv đọc ký tự xây dựng xong từ vựng nhận từ tố gặp lỗi • Thường pttv chia thành phần – Đọc ký tự – Xây dựng từ vựng nhận dạng từ tố 04/02/14 Nhiệm vụ phân tích Mẫu (Pattern) • Là luật để mơ tả từ tố – Cơ sở phân biệt & nhận dạng từ tố khác • Chuỗi ký tự thỏa mãn luật⇒có từ tố • Từ tố tên riêng luật mô tả, từ vựng trường hợp thỏa mãn luật • Ví dụ – Luật mơ tả từ tố Ident • Bắt đầu chữ • Tiếp theo tổ hợp chữ cái, chữ số – Luật mơ tả từ tố assign • Bắt đầu ký tự “:”, sau ký tự “=“ • Luật mơ tả biểu thức quy 04/02/14 Chương 2: Phân tích từ vựng Nhiệm vụ phân tích từ vựng Biểu thức quy Ơ tơ mát hữu hạn Phân tích từ vựng ngơn ngữ PL/0 04/02/14 Biểu thức quy Giới thiệu • Ngơn ngữ: Tập hợp câu/ xâu (string) • Câu: Dãy hữu hạn từ/ký hiệu (symbol) • Từ: Được tạo nên từ chữ hữu hạn Ví dụ: – Ngôn ngữ C tập câu lệnh tạo nên chương trình C hợp lệ – Bộ chữ cho ngơn ngữ C tập chữ ASCII • Một ngơn ngữ vơ hạn, hữu hạn • Một ngơn ngữ (có thể vơ hạn) mô tả hữu hạn nhờ sử dụng biểu thức quy : – Mỗi biểu thức đặc trưng cho tập câu/xâu – Chỉ xét xâu có thuộc ngôn ngữ không, chưa xét ý nghĩa xâu 04/02/14 10 Ơ tơ mát hữu hạn Ví dụ - ε ε q0 q1 a q ε b q3 q4 ε q5 ε ε ε q8 ε c q6 q0 a q7 q1 b b q3 c 04/02/14 q2 35 Ơ tơ mát hữu hạn Tối ưu hóa trạng thái OHĐ • Nhiều DFA đốn nhận ngơn ngữ – Cần tìm DFA có trạng thái • Dễ dàng biểu diễn máy tính • Trạng thái phân biệt – Hai trạng thái p q không phân biệt ∀ xâu w∈∑*, (pw,qw)⇒*(p’,q’)∈FxF∪(Q-F)x(Q-F) pw,qw dẫn tới trạng thái cuối không – Ví dụ: ε xâu phân biệt trạng thái kết thúc khơng kết thúc • Ngun tắc: – Phân hoạch Q thành nhóm t/thái khơng phân biệt – Thay nhóm trạng thái 04/02/14 36 Ơ tơ mát hữu hạn Tối ưu hóa trạng thái OHĐ 1.Chia Q thành nhóm F Q - F 2.Giả thiết tồn nhóm A1, A2,…An • Xét nhóm Am = {qm1, qmk } • Xét a∈∑; pmi = δ(qmi, a) ; pmj = δ(qmj, a) • Nếu ∃ a ∈∑ để pmi pmj phân biệt (bởi xâu ω ): qmi qmj phân biệt (bởi xâu aω ) • Nếu ∀ a ∈∑ pmi pmj không phân biệt (∀ xâu ω ) qmi qmj không phân biệt (∀ xâu aω ) 3.Thuật tốn dừng khơng tạo thêm nhóm 04/02/14 37 Ơ tơ mát hữu hạn Ví dụ a q1 a q0 b b a q2 q3 a a q4 a q5 a b q0 a q1 q3 b q2 04/02/14 a a 38 Ơ tơ mát hữu hạn Xây dựng OHK từ biểu thức quy • Sử dụng biểu thức quy mơ tả NNCQ – Trong chương trình dịch, mơ tả từ vựng – Ví dụ: Tên : a(a+b)* //a chữ cái, b: chữ số Số thực tĩnh: b+| b+ b+ //b: Chữ số • Ngơn ngữ quy đốn nhận FA – Cần xây dựng FA đốn nhận ngơn ngữ mơ tả biểu thức quy 04/02/14 39 Ơ tơ mát hữu hạn Thuật tốn ε : Là btcq ứng với FA q0 ∅ : Là btcq ứng với FA q0 a∈∑: Là btcq ứng với FA q0 04/02/14 a q 40 Ơ tơ mát hữu hạn Thuật toán q0 r Là btcq ứng với FA Mr s Là btcq ứng với FA Ms r+s r.s r* 04/02/14 q0 q’0 Mr ε Mr q0 F ε F q0 ε q0 Mr ε F F Ms q0 F Ms q0 ε ε q’0 Mr F Ms ε F f 41 Ơ tơ mát hữu hạn Ví dụ Xây dựng DFA đốn nhận NNCQ biểu diễn btcq (0+1)*011 1 q0 0 q1 04/02/14 q3 q2 q4 42 Ơ tơ mát hữu hạn Thuật tốn đốn nhận xâu OHĐ • Phương pháp phân tích bảng – Dựa giải thuật tổng quát để đoán nhận DFA – Ưu điểm: • • Chương trình độc lập với DFA Dễ biến đổi, không cần sửa lại chương trình – Nhược điểm: • • Khó khăn lập bảng Kích thước bảng lớn • Phương pháp diễn giải – Thực diễn giải sơ đồ – Dễ viết, c\trình gắn với đồ thị dich chuyển – Được sử dụng để xây dựng phân tích từ vựng 04/02/14 43 Chương 2: Phân tích từ vựng Nhiệm vụ phân tích từ vựng Biểu thức quy Ơ tơ mát hữu hạn Phân tích từ vựng ngơn ngữ PL/0 04/02/14 44 Phân tích từ vựng ngơn ngữ PL/0 mở rộng Các từ tố PL/0 mở rộng • Số ngun • Định danh • Từ khóa: begin, end, if, then, while, do, call, const, var, procedure, program, else, for, to • Dấu phép tốn: – số học: – so sánh: >= + - */ = • Dấu phân cách: • Dấu phép gán: 04/02/14 != < ( ) : ; > ‘ : nextChar(); if(Ch == ‘=‘) { nextChar(); return Geq;} else return Gtr; … } 04/02/14 48 Phân tích từ vựng ngơn ngữ PL/0 mở rộng Nhận dạng từ tố Xây dựng xong từ vựng, cần nhận dạng từ tố – Là tên trạng thái cuối Ơ-tơ-mát – Nếu Ơ-tơ-mát kết thúc trạng thái ident, cần kiểm tra có phải từ khóa • Dùng kỹ thuật bảng chuyển đổi Chú ý: Với từ tố ident number, cần phải ghi nhận giá trị từ vựng tương ứng 04/02/14 BEGIN → KW_BEGIN CALL → … KW_CALL VAR → KW_VAR WHILE → KW_WHILE 49 .. .Chương 2: Phân tích từ vựng Nhiệm vụ phân tích từ vựng Biểu thức quy Ơ tơ mát hữu hạn Phân tích từ vựng ngôn ngữ PL/0 04/02/14 Nhiệm vụ phân tích Mục đích & Nhiệm vụ... thức quy 04/02/14 Chương 2: Phân tích từ vựng Nhiệm vụ phân tích từ vựng Biểu thức quy Ơ tơ mát hữu hạn Phân tích từ vựng ngơn ngữ PL/0 04/02/14 Biểu thức quy Giới thiệu • Ngơn ngữ: Tập hợp câu/... S → a |aA A → aA | bA | a | b 04/02/14 18 Chương 2: Phân tích từ vựng Nhiệm vụ phân tích từ vựng Biểu thức quy Ơ tơ mát hữu hạn Phân tích từ vựng ngơn ngữ PL/0 04/02/14 19 Ơ tơ mát hữu hạn Mơ