Bài giảng môn học trình biên dịch chương 3 phân tích từ vựng

33 12 0
Bài giảng môn học trình biên dịch   chương 3 phân tích từ vựng

Đ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

CHƯƠNG PHÂN TÍCH TỪ VỰNG 3.1 Vai trò cuả phân tích từ vựng Token, mẫu, trị từ vựng Bảng 3.1 Bảng danh biểu token Token const if then ralation num id Trị từ vựng const if then < , < =, < >, = , > = 3.14, 2.5, 7.6 abc, ou, bc1… literal ‘abcef’ YÙ nghóa mẫu const if then toán tử quan hệ số chuỗi gồm ký tự chữ số, bắt đầu ký tự chữ chuỗi ký tự nằm dấu ‘ Chương trình nguồn Bộ phân tích từ vựng token yêu cầu token Bộ phân tích CP Bảng danh biểu Hình 3.1 Sự giao tiếp phân tích từ vựng phân tích cú pháp 3.2 CÁC TÍNH CHẤT CỦA TOKEN 3.3 CHỨA TẠM CHƯƠNG TRÌNH NGUỒN Cặp đệm Cấu tạo A : p1 = B * - eof p2 Hình 3.2 Cặp đệm Quy trình hoạt động Giải thuật: if p2 ranh giới nửa đệm then begin lấp đầy N ký hiệu nhập vào nửa bên phải p2 := p2 + 1; end else if p2 tận bên phải đệm then begin lấp đầy N kỳ hiệu nhập vào nửa bên trái đệm chuyển p2 ký tự tận bên trái đệm end else p2 := p2 + 1; Phương pháp cầm canh A B * X EOF - EOF : = N ký tự p1 p2 EOF N ký tự Hình 3.3 Cặp đệm theo phương pháp cầm canh Giải thuật: p2 := p2 + 1; if p2 ^ eof then if p2 ranh giới nửa đệm then begin chất đầy N kỳ hiệu nhập vào nửa bên phải đệm; p2 := p2 + end else if p2 tận bên phải đệm then begin lấp đầy N ký hiệu vào nử bên trái đệm; chuyển p2 đầu đệm end else /* dừng phân tích từ vựng */ 3.4 Đặc tả token Các quy tắc định nghiã biểu thức quy ∈ biểu thức quy, biểu thị cho tập {∈} a ký hiệu thuộc Σ, biểu thị cho tập {a} r s hai biểu thức quy, biểu thị cho L (r) L (s) thì: ø a) (r) | (s) biểu thức quy, biểu thị cho L(r) ∪ L(s) b) (r) (s) biểu thức quy, biểu thị cho L(r) L(s) c) (r)* biểu thức quy, biểu thị cho (L(r))* d) r biểu thức quy, biểu thị cho L(r) Thí dụ 3.1 Cho Σ = {a, b} a|b (a| b) | (b| a) a* Hai biểu thức quy tương đương r s, ký hiệu r = s Định nghóa quy Nếu Σ tập ký hiệu bản, định nghiã quy chuỗi định nghiã có dạng: d1 → r …… dn → r n Thí dụ 3.2 letter → A | B | …|Z | a| b |…| z digit → |1| …| id → letter ( letter | digit)* Thí dụ 3.3 digit → | |… | digits → digit digit* optional_fraction → digits | ∈ optional_exponent → (E (+| - |∈) digits) | ∈ 3.5 Nhận dạng token Thí dụ 3.4 Cho văn phaïm G: stmt → if exp then stmt | if exp then stmt else stmt |∈ exp → term relop term | term term → id | num Định nghóa quy if → if then → then else → else relop → < | | >= | | = id → letter (letter | digit)* num → digit+ (.digit+ | ∈) ( E ( + | - | ∈) digit+ | ∈ ) delim → blank | tab | newline ws → delim+ Từ định nghóa quy ta xây dựng bảng mẫu cho token bảng 3.3 trang 74 3.6 Sơ đồ dịch Miêu tả Bắt đầu > = other Start < = > other = > Hình 3.4 Sơ đồ dịch cho >= = * return (relop, LE) return (relop, NE) * return (relop, LT) return (relop, EQ) = other (relop, EQ) * return (relop, EQ) Hình 3.5 Sơ đồ dịch nhận dạng token relop Lưu ý: - Phần khai báo bao gồm khai báo hằng, biến biểu thị định nghóa quy - Phần quy tắc biên dịch phát biểu có dạng: p1 → {hành vi ngữ nghóa 1} p2 → {hành vi ngữ nghóa 2} …… pn → {hành vi ngữ nghóa n} 3.8 Automat hữu hạn Automat hữu hạn không tất định (NFA) Thí dụ: Cho NFA: Tập trạng thái S = {0, 1,2, 3}; Σ = {a, b}; Trạng thái bắt đầu so = 0; Tập trạng thái kết thúc F = {3} - Biểu thức r# gọi biểu thức quy gia tố Văn phạm biểu thức quy: exp → exp | term exp → term term → term • factor term → factor factor → factor* factor → ( exp ) factor → a factor → b • • • # • b b * a a b Hình 3.16 Cây phân rã biểu thức gia tố (a| b )* abb# ∈ start A ∈ B ∈ a C ∈ F ∈ b ∈ a a b b 4 # D ∈ ∈ Hình 3.17 NFA xây dựng từ ( a| b )* abb# Lưu ý: - Các trạng thái ký hiệu số trạng thái quan trọng; Các trạng thái ký hiệu chữ trạng thái không quan trọng - Ở thí dụ 3.6 trạng thái A C có số trạng thái quan trọng 2,4,7 , (H 3.17) 1,2,3: A = {0,1,2,4,7} C = {1,2,4,5,7} F Bảng 3.6 Các quy tắc để tính ba hàm nullable, firstpos, lastpos Nút n nullable (n) n nút có tên ∈ true n nút có tên vị trí i | c1 n c2 ° n c1 c2 ∗ c1 n firstpos (n) lastpos (n) false {i} {i} nullable(c1) or nullable(c2) firstpos(c1) ∪ firstpos(c2) lastpos(c1) ∪ if nullable(c1) if nullable(c2) then lastpos(c1) ∪ lastpos(c2) else lastpos(c2) firstpos(c1) lastpos(c1) nullable(c1) and then firstpos(c1) ∪ nullable(c2) firstpos(c2) else firstpos(c1) true lastpos(c2) Các quy tắc tính hàm followpos (n): Nếu nút n nút cat với bên trái c1, bên phải c2 i vị trí lastpos(c1), tất vị trí first(c2) cho vào followpos(i) Nếu n nút star i vị trí lastpos(n) tất vị trí firstpos(n) cho vào followpos(i) Thí dụ 3.10 Ta xác định DFA cho biểäu thức (a | b)* abb {1,2,3} {1,2,3} {6} {5} {1,2,3} {4} {6} # {6} {1,2,3} {3} {5}a{5} {1,2} ∗ {1,2} {4}a{4} {3}a{3} {1,2} {1,2} {1}a {1} {2}a {2} Hình 3.19 Tính hàm nullable, firstpos, lastpos cho nút phân tích biểu thức ( a| b )* abb Sau ta tính hàm followpos Bảng 3.7 trị followpos nút (H.3.19) Nút followpos {1,2,3} {1,2,3} {4} {5} {6} _ Giải thuật 3.5 Xây dựng DFA từ biểu thức quy Nhập: Biểu thức quy r Xuất: DFA gọi D, nhận dạng ngôn ngữ L( r) Phương pháp :1 Xây dựng phân tích cho BTCQ gia tố r# Tính hàm nullable, firstpos, lastpos followpos cho nút phân tích Xây dựng trạng thái, hàm truyền bảng truyền cho D thủ tục (mô 3.5) Thủ tục tạo tập trạng thái DFA: Lúc đầu D có trạng thái bắt đầu firstpos(root) , chưa đánh dấu Mô 3.5 Thủ tục tạo tập while có trạng thái T chưa đánh dấu, tập trạng thái D begin đánh dấu T; for với ký hiệu nhập a do; begin với U tập vị trí followpos (p), p vị trí T, cho ký hiệu vị trí p a; if U không rỗng chưa có tập trạng thái D then begin thêm U vào tập trạng thái D trạng thái chưa đánh dấu; D[T, a] := U; end; end; end; Lưu ý: trạng thái kết thúc D có chứa vị trí y Thí dụ 3.10 Xây dựng DFA từ btcq ( a| b )* abb (trang 103 -104) Tối thiểu số trạng thái DFA - Khái niệm DFA đầy đủ, trạng tái chết d - Chuỗi w phân biệt trạng thái s với trạng thái t Thí dụ: DFA (H.3.14, tr 90), xuất phát từ C để nhận dạng w=bb không đến trạng thái chấp nhận, ngược lại từ B đến E trạng thái chấp nhận Giải thuật 3.6 Tối thiểu số trạng thái DFA Nhập: DFA, gọi M có S, Σ, s0, F M DFA đầy đủ Xuất: DFA, gọi M’ chấp nhận ngôn ngữ M, với số trạng thái nhỏ Phương pháp: 1.Tạo Π khởi đầu có nhóm: trạng thái kết thúc F, trạng thái không kết thúc S – F Áp dụng thủ tục (mô 3.6) để tạo Πnew Nếu Πnew = Π Πfinal = Π, tiếp tục bước 4, ngược lại lặp lại bước 2, với Π = Πnew Chúng ta chọn nhóm trạng thái đại diện trạng thái M’ Nếu M’ có trạng thái chết d loại khỏi M’ Tất truyền đến trạng thái d không xác định Mô 3.6 Giải thuật tạo Πnew for với nhóm G Π begin - chia G thành nhóm nhỏ cho hai trạng thái s t G nhóm nhỏ truyền tất ký hiệu nhập a từ s t đến trạng thái nhóm Π; - ta thay G nhóm nhỏ vừa tạo nên, cho chúng vào Πnew ; end; Thí dụ 3.11 Cho DFA (H 3.14, tr 90) Cách giải tr 106 – 107 Các phương pháp nén bảng truyền FA Thu giảm hàng cột dư thừa – 0000 222222222 – – y next yrmap 4 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 2 -2 -1 5 -1 -1 -1 3 4 Hình 3.21 Bảng truyền nén phương pháp thu giảm hàng cột dư thừa Nén cặp ynext • ‘0’,3 ‘0’,1 ‘1’,1 ‘2’,1 ‘3’,1 ‘4’,2 ‘5’,2 ynext • ynext • ‘0’,2 ‘1’,2 ‘2’,3 ‘3’,4 ‘4’,1 ‘5’,1 ynext • ‘0’,1 ‘1’,1 ‘2’,2 ‘3’,2 ‘4’,2 ‘5’,2 ‘6’,2 ynext • ‘0’,4 ‘1’,4 ‘2’,4 ‘3’,2 ‘4’,2 ‘5’,2 ‘6’,2 ynext • ‘0’,2 ‘1’,2 ‘2’,2 ‘3’,2 ‘4’,1 ‘5’,1 ynext -1-1…12-1… 1111111111-1…-1 5-1… Hình 3.22 Bảng truyền nén theo phương pháp nén cặp Mô 3.7 Giải thuật tìm trạng thái bảng truyền nén row := ynext [t]; I := row^[0], /* row^ ma trận chieàu ynext t */ if I = then begin c := ord (a) s := row^[c]; /* s trạng thái */ end else begin while (a < > row^ [i] chart) and (i < I) i := i + 1; if a = row^[i] chart then s := row^[i] State else writen (‘sai – lỗi từ vựng’); end; 3.11 Thiết kế sinh phân tích từ vựng Đặc tả lex Chương trình mô FA Trình biên dịch bảng truyền Lex a) Bộ đệm nhập Chương trình mô FA Bảng truyền b) Hình 3.23 Trình biên dịch Lex Bộ phân tích từ vựng Mẫu so trùng sở NFA N(p1) ∈ so ∈ N(pi) ∈ N(pn) Hình 3.24 NFA tao từ đặc tả LEX .. .Chương trình nguồn Bộ phân tích từ vựng token yêu cầu token Bộ phân tích CP Bảng danh biểu Hình 3. 1 Sự giao tiếp phân tích từ vựng phân tích cú pháp 3. 2 CÁC TÍNH CHẤT CỦA TOKEN 3. 3 CHỨA TẠM CHƯƠNG... lỗi từ vựng? ??); end; 3. 11 Thiết kế sinh phân tích từ vựng Đặc tả lex Chương trình mô FA Trình biên dịch bảng truyền Lex a) Bộ đệm nhập Chương trình mô FA Bảng truyền b) Hình 3. 23 Trình biên dịch. .. Thí dụ 3. 10 Ta xác định DFA cho biểäu thức (a | b)* abb {1,2 ,3} {1,2 ,3} {6} {5} {1,2 ,3} {4} {6} # {6} {1,2 ,3} {3} {5}a{5} {1,2} ∗ {1,2} {4}a{4} {3} a {3} {1,2} {1,2} {1}a {1} {2}a {2} Hình 3. 19 Tính

Ngày đăng: 23/03/2022, 21:57

Hình ảnh liên quan

Bảng 3.1 Bảng danh biểu của token - Bài giảng môn học trình biên dịch   chương 3 phân tích từ vựng

Bảng 3.1.

Bảng danh biểu của token Xem tại trang 1 của tài liệu.
Hình 3.1. Sự giao tiếp giữa bộ phân tích từ vựng và bộ phân tích cú pháp - Bài giảng môn học trình biên dịch   chương 3 phân tích từ vựng

Hình 3.1..

Sự giao tiếp giữa bộ phân tích từ vựng và bộ phân tích cú pháp Xem tại trang 2 của tài liệu.
Hình 3.3. Cặp bộ đệm theo phương pháp cầm canh Giải thuật: - Bài giảng môn học trình biên dịch   chương 3 phân tích từ vựng

Hình 3.3..

Cặp bộ đệm theo phương pháp cầm canh Giải thuật: Xem tại trang 4 của tài liệu.
Từ định nghĩa chính quy ta xây dựng bảng mẫu cho token như ở bảng 3.3 trang 74. - Bài giảng môn học trình biên dịch   chương 3 phân tích từ vựng

nh.

nghĩa chính quy ta xây dựng bảng mẫu cho token như ở bảng 3.3 trang 74 Xem tại trang 7 của tài liệu.
6 Hình 3.4. Sơ đồ dịch cho &gt;= và = - Bài giảng môn học trình biên dịch   chương 3 phân tích từ vựng

6.

Hình 3.4. Sơ đồ dịch cho &gt;= và = Xem tại trang 8 của tài liệu.
Bảng 3.4. Bảng truyền cho NFA ở hình 3.10 - Bài giảng môn học trình biên dịch   chương 3 phân tích từ vựng

Bảng 3.4..

Bảng truyền cho NFA ở hình 3.10 Xem tại trang 11 của tài liệu.
Hình 3.13. NFA nhận dạng (a| b)*abb - Bài giảng môn học trình biên dịch   chương 3 phân tích từ vựng

Hình 3.13..

NFA nhận dạng (a| b)*abb Xem tại trang 13 của tài liệu.
Hình 3.16. Cây phân rã của biểu thức gia tố (a| b)* abb# - Bài giảng môn học trình biên dịch   chương 3 phân tích từ vựng

Hình 3.16..

Cây phân rã của biểu thức gia tố (a| b)* abb# Xem tại trang 19 của tài liệu.
Hình 3.17. NFA được xây dựng từ (a| b)* abb# Lưu ý: - Bài giảng môn học trình biên dịch   chương 3 phân tích từ vựng

Hình 3.17..

NFA được xây dựng từ (a| b)* abb# Lưu ý: Xem tại trang 20 của tài liệu.
Bảng 3.6. Các quy tắc để tính ba hàm nullable, firstpos, lastpos - Bài giảng môn học trình biên dịch   chương 3 phân tích từ vựng

Bảng 3.6..

Các quy tắc để tính ba hàm nullable, firstpos, lastpos Xem tại trang 22 của tài liệu.
Hình 3.19. Tính các hàm nullable, firstpos, lastpos cho các nút trên cây phân tích của biểu thức ( a |b )* abb - Bài giảng môn học trình biên dịch   chương 3 phân tích từ vựng

Hình 3.19..

Tính các hàm nullable, firstpos, lastpos cho các nút trên cây phân tích của biểu thức ( a |b )* abb Xem tại trang 23 của tài liệu.
Bảng 3.7. các trị followpos của các nút trên cây ở (H.3.19) Nútfollowpos - Bài giảng môn học trình biên dịch   chương 3 phân tích từ vựng

Bảng 3.7..

các trị followpos của các nút trên cây ở (H.3.19) Nútfollowpos Xem tại trang 24 của tài liệu.
4. Các phương pháp nén bảng truyền FA - Bài giảng môn học trình biên dịch   chương 3 phân tích từ vựng

4..

Các phương pháp nén bảng truyền FA Xem tại trang 28 của tài liệu.
Hình 3.22. Bảng truyền nén theo phương pháp nén cặp - Bài giảng môn học trình biên dịch   chương 3 phân tích từ vựng

Hình 3.22..

Bảng truyền nén theo phương pháp nén cặp Xem tại trang 29 của tài liệu.
Mô phỏng 3.7. Giải thuật tìm trạng thái kế tiếp trên bảng truyền đã được nén - Bài giảng môn học trình biên dịch   chương 3 phân tích từ vựng

ph.

ỏng 3.7. Giải thuật tìm trạng thái kế tiếp trên bảng truyền đã được nén Xem tại trang 30 của tài liệu.
Hình 3.23. Trình biên dịch Lex và Bộ phân tích từ vựng - Bài giảng môn học trình biên dịch   chương 3 phân tích từ vựng

Hình 3.23..

Trình biên dịch Lex và Bộ phân tích từ vựng Xem tại trang 31 của tài liệu.
Hình 3.24. NFA được tao ra từ sự đặc tả LEX - Bài giảng môn học trình biên dịch   chương 3 phân tích từ vựng

Hình 3.24..

NFA được tao ra từ sự đặc tả LEX Xem tại trang 32 của tài liệu.

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

Tài liệu liên quan