Xây dựng CHƯƠNG TRÌNH DỊCH - Chương 2: Phân tích từ vựng
lượt xem 11
download
Tìm chuỗi dài nhất các ký tự đầu vào, bắt đầu từ ký tự hiện tại tương ứng với một từ tố và trả về từ tố này Nhiệm vụ Duyệt từng ký tự của văn bản nguồn Loại bỏ các ký tự không cần thiết như dấu cách, chú thích,.. Xây dựng từ vựng từ những ký tự đọc được Nhận dạng từ tố và gửi tới pha tiếp Nhận biết từ tố gồm Nhận biết các từ khóa, tên do người dùng định nghĩa Nhận biết các con số, hằng chuỗi, hằng ký tự Nhận biết các ký tự đặc biệt (+,*,..), ký hiệu kép (:=,!=,..)...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Xây dựng CHƯƠNG TRÌNH DỊCH - Chương 2: Phân tích từ vựng
- Xây dựng CHƯƠNG TRÌNH DỊCH Phạm Đăng Hải haipd@soict.hut.edu.vn
- Chương 2: Phân tích từ vựng 1. Nhiệm vụ của bộ phân tích từ vựng 2. Biểu diễn cấu trúc từ vựng 3. Phân tích từ vựng của ngôn ngữ KPL 05/29/13 2
- 1. Nhiệm vụ của bộ phân tích Mục đích & Nhiệm vụ • Mục đích: – Tìm chuỗi dài nhất các ký tự đầu vào, bắt đầu từ ký tự hiện tại tương ứng với một từ tố và trả về từ tố này • Nhiệm vụ – Duyệt từng ký tự của văn bản nguồn • Loại bỏ các ký tự không cần thiết như dấu cách, chú thích,.. – Xây dựng từ vựng từ những ký tự đọc được – Nhận dạng từ tố và gửi tới pha tiếp Nhận biết từ tố gồm – Nhận biết các từ khóa, tên do người dùng định nghĩa – Nhận biết các con số, hằng chuỗi, hằng ký tự – Nhận biết các ký tự đặc biệt (+,*,..), ký hiệu kép (:=,!=,..) 05/29/13 3
- 1. Nhiệm vụ của bộ phân tích Từ vựng và Từ tố • Từ vựng (Lexeme) – Là đơn vị nhỏ nhất trong ngôn ngữ lập trình • Được coi là ký hiệu của một bảng chữ của ngôn ngữ – Được xây dựng từ các ký tự ASCII • Từ tố (Token) – Là thuật ngữ dùng chỉ các từ vựng có cùng ý nghĩa cú pháp • Có thể coi từ vựng là những từ cụ thể trong từ điển: “hôm nay”, “trời”, “đẹp”; còn từ tố là loại từ: “trạng từ”, “danh từ”, “tính từ”,.. 05/29/13 4
- 1. Nhiệm vụ của bộ phân tích Từ tố→Ví dụ pos := start + 10 * size; • “pos”, “start”, “size”, “+”, “10”, “*”,”:=“, “;” là từ vựng • “pos”, “start”, “size”, → các từ vựng thuộc lớp từ tố tên (ident) • ”:=“→ từ vựng của từ tố gán (assign) • “10” → từ vựng của từ tố số nguyên (number) • “+” → từ vựng của từ tố cộng (plus) • “*” → từ vựng của từ tố nhân (times) • “;” → từ vựng của từ tố chấm phẩy (semicolone) 05/29/13 5
- 1. Nhiệm vụ của bộ phân tích Từ tố→Chú ý • Các từ tố Ident, number, plus, assign,... do 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 là việc số hóa ký hiệu • Một từ tố có thể ứng với tập các từ vựng khác nhau nên cần thêm một số thông tin khác để biết được cụ thể đó là từ vựng nào – Các chuỗi “19”, “365” đều là chuỗi số, có từ tố “number”, nhưng khi sinh mã cần phải biết rõ giá trị là 19 hay 365 • Bộ phân tích từ vựng không chỉ nhận dạng được các từ tố mà còn phải biết thuộc tính tương ứng – Từ tố tác động đến bộ phân tích cú pháp – Thuộc tính sử dụng trong bộ sinh mã 05/29/13 6
- 1. Nhiệm vụ của bộ phân tích Thực hiện Token Chương Phân tích Phân tích trình nguồn từ vựng getToken() cú pháp Bảng ký hiệu • Thực hiện lặp dựa vào yêu cầu từ bộ ptcp – Bộ ptcp khi cần một từ tố sẽ gọi getToken() – Nhận được y/cầu, bộ pttv sẽ đọc các ký tự cho tới khi xây dựng xong từ vựng và nhận ra từ tố hoặc gặp lỗi • Thường bộ pttv được chia thành 2 phần chính – Đọc ký tự – Xây dựng từ vựng và nhận dạng từ tố 05/29/13 7
- 1. Nhiệm vụ của bộ phân tích Mẫu (Pattern) • Là luật để mô tả một từ tố nào đó – Cơ sở phân biệt & nhận dạng các từ tố khác nhau • Chuỗi ký tự cùng thỏa mãn một luật⇒có cùng một từ tố • Từ tố là tên riêng của một luật mô tả, từ vựng là một trường hợp thỏa mãn luật • Ví dụ – Luật mô tả của từ tố Ident • Bắt đầu là một chữ cái • Tiếp theo là tổ hợp chữ cái, chữ số – Luật mô tả của từ tố assign • Bắt đầu bởi ký tự “:”, ngay sau đó là ký tự “=“ • Dùng văn phạm chính quy để mô tả 05/29/13 8
- Chương 2: Phân tích từ vựng 1. Nhiệm vụ của bộ phân tích từ vựng 2. Biểu diễn cấu trúc từ vựng 3. Phân tích từ vựng của ngôn ngữ KPL 05/29/13 9
- 2. Biểu diễn cấu trúc từ vựng Biểu thức chính quy (regular expression) Cho Σ là một bảng chữ. ∅ là biểu thức chính quy biểu diễn tập ∅ ε là biểu thức chính quy biểu diễn tập {ε} ∀a ∈ Σ, a là biểu thức chính quy biểu diễn tập {a} – Nếu r và s là các biểu thức chính quy biểu diễn các tập R và S tương ứng thì (r + s) [(r|s)], (rs), (r*) là các biểu thức chính quy biểu diễn các tập R ∪ S, RS và R* tương ứng. Ngôn ngữ được xác định bởi biểu thức chính quy e, ký hiệu là L(e) là ngôn ngữ chính quy 05/29/13 10
- 2. Biểu diễn cấu trúc từ vựng Biểu thức chính quy → Ví dụ Cho Σ ={a,b} một bảng chữ. – e1 = a*+b* ⇒ L(e1)= {ε,a,aa,aaa,…,b,bb,bbb} – e2 = a*b* ⇒ L(e2)= {ε,a,b,aa,ab,bb,aaa,aab,..} – e3 = a(a+b)* ⇒L(e3)={a,aa,ab,aaa,aab,aba,abb,..} • Xâu dạng: bắt đầu là ký hiệu a, tiếp theo là tổ h ợp bất kỳ của các ký hiệu a, b • Nếu a là một chữ cái, b là chữ số ⇒L(e3) là ngôn ngữ chứa các tên ⇒e3 biểu thức chính quy sinh ra tên 05/29/13 11
- 2. Biểu diễn cấu trúc từ vựng Văn phạm chính quy và Ngôn ngữ chính quy • Văn phạm chính quy – Văn phạm mà mọi sản xuất có dạng A→a|aB hoặc A→a|Ba – Dùng diễn tả từ vựng của NNLT →| | → “a” |”b” |”c” |….|”z”|”A”|”B”|…|”Z” →”0” | ”1” | ”2” | ”3” |”4” | ”5” |”6” | ”7” |”8” |”9” – Văn phạm chính quy sinh ra ngôn ngữ chính quy • Ngôn ngữ chính quy – Được biểu diễn (mô tả) bởi biểu thức chính quy – Đoán nhận bởi các Otomat hữu hạn 05/29/13 12
- 2. Biểu diễn cấu trúc từ vựng Ô tô mát hữu hạn • Gồm một tập các trạng thái Q – Có một trạng thái đầu q0 ∈ Q – Có một tập trạng thái kết thúc F ⊆Q • Một bộ chữ vào Σ • Một tập các hàm dịch chuyển δ:(Q x Σ) → Q Hoạt động – Ô-tô-mát xuất phát từ trạng thái đầu, đọc từng ký hiệu của xâu vào, chuyển trạng thái dựa trên trạng thái hi ện thời và ký hiệu đọc được. – Sau khi đọc hết xâu vào mà ô-tô-mát ở trạng thái kết thúc, xâu được gọi là được đoán nhận bởi ô-tô-mát 05/29/13 13
- 2. Biểu diễn cấu trúc từ vựng Ô tô mát hữu hạn→Ví dụ ∀ Σ = {a,b,c} δ a b c • Q = {q0, q1} q0 q1 q0 q0 • q0 = q0 q1 q0 q1 q1 • F = {q1} a b c a a b b c End q1 0 Xâu abcaabbc được đoán nhận 05/29/13 14
- 2. Biểu diễn cấu trúc từ vựng Ô tô mát hữu hạn→Biểu diễn Trạng thái Trạng thái đầu Trạng thái kết thúc p a p δ(p,a) = q b a b q0 q1 c c a Xâu trên bộ chữ {a,b,c} có lẻ ký hiệu a 05/29/13 15
- 2. Biểu diễn cấu trúc từ vựng Ô tô mát hữu hạn→Ví dụ a b {a*b*} a,b b a q0 q1 q2 1 1 0 1 0 0 1 0 0 q1 0 0 (0+1)*101 ⇔ Xâu nhị phân có hậu tố là 101 Chữ số Chữ số q0 Chữ số q2 q1 Đoán nhận số nguyên hoặc số thực dấu phẩy tĩnh 05/29/13 16
- Chương 2: Phân tích từ vựng 1. Nhiệm vụ của bộ phân tích từ vựng 2. Biểu diễn cấu trúc từ vựng 3. Phân tích từ vựng của ngôn ngữ KPL 05/29/13 17
- 3. Phân tích từ vựng của ngôn ngữ KPL Các từ tố của KPL • Số nguyên • Định danh • Từ khóa: begin,end, if,then, while, do, call, const, var, procedure, program, type, function, of, integer, char, else, for, to, array • Hằng ký tự • Dấu phép toán: – số học: + - */ – so sánh: = != < > = • Dấu phân cách: ( ) . : ; (. .) • Dấu phép gán: := 05/29/13 18
- 3. Phân tích từ vựng của ngôn ngữ KPL Ô-tô-mát hữu hạn của bộ pttv Sau mỗi từ tố được nhận biết, bộ từ vựng lại quay lại trạng thái s0 05/29/13 19
- 3. Phân tích từ vựng của ngôn ngữ KPL Xây dựng từ vựng • Khi bộ pttv - thủ tục nextToken() bắt đầu hoạt động, ô-tô-mát ở trạng thái khởi tạo (Trạng thái 0) • Bộ pttv gọi liên tiếp nextChar() để đọc các ký hiệu trên văn bản nguồn cho tới khi gặp một ký tự không thuộc luật mô tả hiện tại →Ô-to-mát không chuyển trạng thái được – Xâu đọc được là từ vựng mang ý nghĩa của từ tố đang phân tích và là trạng thái hiện tại của Ô-tô-mát – Đọc thừa ra một ký tự • Là ký tự trắng hoặc ký tự đầu của từ tố tiếp → Khi nextToken() được gọi, sẽ làm việc ngay với một ký tự có sẵn. 05/29/13 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo trình quản trị du lịch lữ hành - Chương 3
8 p | 264 | 62
-
Quy trình xây dựng bộ câu hỏi trắc nghiệm kiến thức học phần Giáo dục học đại cương theo chương trình đào tạo tín chỉ ở Trường Đại học Sư phạm Thành phố Hồ Chí Minh
11 p | 219 | 47
-
Mối quan hệ giữa chất lượng dịch vụ đào tạo và sự hài lòng của sinh viên Trường Đại học Xây dựng Miền Trung
6 p | 291 | 16
-
Tài liệu dạy học môn Giáo dục quốc phòng và an ninh (Trong chương trình đào tạo trình độ cao đẳng)
214 p | 83 | 10
-
Chuyển dịch cơ cấu kinh tế nông nghiệp, nông thôn để xây dựng nông thôn mới ở Thanh Hóa
8 p | 69 | 10
-
Đề thi học phần: Xây dựng chương trình dịch
4 p | 122 | 8
-
Giảng dạy phiên dịch theo phương pháp tiếp cận năng lực và một số kiến nghị
7 p | 168 | 7
-
Tài liệu dạy học môn Giáo dục quốc phòng và an ninh (Trong chương trình đào tạo trình độ trung cấp)
147 p | 58 | 7
-
Chủ nghĩa Mác - Lênin, tư tưởng Hồ Chí Minh về xây dựng Đảng - Thường thức về xây dựng Đảng: Phần 2
53 p | 30 | 6
-
Vai trò của làng nghề trong quá trình xây dựng nông thôn mới ở thị xã Điện Bàn, tỉnh Quảng Nam
8 p | 98 | 5
-
Nhìn lại chương trình làm văn THCS và THPT hiện hành
8 p | 29 | 4
-
Xác định mục đích dạy vẽ của giáo viên mầm non hiện nay
5 p | 87 | 4
-
Đổi mới chương trình môn thực hành tiếng khoa Ngôn ngữ và văn hóa Pháp
19 p | 67 | 4
-
Xây dựng trung tâm học liệu - một trong những thành tố quan trọng để xây dựng Trường Cao đẳng Công thương thành phố Hồ Chí Minh trở thành trường chất lượng cao
3 p | 12 | 4
-
Xây dựng chương trình đào tạo nguồn nhân lực tại các doanh nghiệp trong thời đại ngày nay
6 p | 52 | 3
-
Một số vấn đề về chương trình đào tạo giáo dục chính trị tại trường Đại học Sài Gòn
8 p | 46 | 2
-
Chương trình đào tạo sau đại học tại Vương quốc Anh và bài học kinh nghiệm trong việc xây dựng các chương trình đào tạo thạc sĩ tại trường Đại học Hồng Đức
13 p | 60 | 1
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn