1. Trang chủ
  2. » Giáo án - Bài giả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

33 15 0

Đ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

Thông tin cơ bản

Tiêu đề Phân Tích Từ Vựng
Định dạng
Số trang 33
Dung lượng 169,22 KB

Nội dung

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 (Trang 1)
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 (Trang 2)
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: (Trang 4)
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 (Trang 7)
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à = (Trang 8)
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 (Trang 11)
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 (Trang 13)
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# (Trang 19)
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 ý: (Trang 20)
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 (Trang 22)
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 (Trang 23)
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 (Trang 24)
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 (Trang 28)
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 (Trang 29)
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 (Trang 30)
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 (Trang 31)
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 (Trang 32)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w