begin laáp ñaày N kyø hieäu nhaäp vaøo nöûa beân traùi boä ñeäm chuyeån. p2 veà kyù töï taän cuøng beân traùi cuûa boä ñeäm end else p2 := p2 + 1;.[r]
Trang 1CHƯƠNG 3 PHÂN TÍCH TỪ VỰNG
3.1 Vai trò cuả bộ phân tích từ vựng
1 Token, mẫu, trị từ vựng
Bảng 3.1 Bảng danh biểu của token
const
if then
ralation
num
id literal
const if then
< , < =, < >, = , > = 3.14, 2.5, 7.6 abc, ou, bc1…
‘abcef’
const if then các toán tử quan hệ hằng số bất kỳ chuỗi gồm ký tự chữ và số,
bắt đầu là ký tự chữ là chuỗi ký tự bất kỳ nằm
giữa 2 dấu ‘
Trang 2Hì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
3.2 CÁC TÍNH CHẤT CỦA TOKEN
3.3 CHỨA TẠM CHƯƠNG TRÌNH NGUỒN
1 Cặp bộ đệm
Cấu tạo
Bộ phân tích từ vựng
Bảng danh biểu
Bộ phân tích CP
Chương trình
yêu cầu token
Trang 3A : = B * - 2 eof
Hình 3.2 Cặp bộ đệm Quy trình hoạt động
Giải thuật:
if p2 ở ranh giới một nửa bộ đệm then
begin lấp đầy N ký hiệu nhập mới vào nửa bên phải
p2 := p2 + 1;
end else if p2 ở tận cùng bên phải bộ đệm then
begin lấp đầy N kỳ hiệu nhập vào nửa bên trái bộ đệm
chuyển
p2 về ký tự tận cùng bên trái của bộ đệm end else p2 := p2 + 1;
Trang 42 Phương pháp cầm canh
Hình 3.3 Cặp bộ đệ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 một nửa bộ đệm then
begin
chất đầy N kỳ hiệu nhập vào nửa bên phải bộ đệm;
p2 := p2 + 1
end
Trang 5else if p2 ở tận cùng bên phải bộ đệm then
begin
lấp đầy N ký hiệu vào nử bên trái bộ đệm; chuyển p2 về đầu bộ đệm
end else /* dừng sự phân tích từ vựng */
3.4 Đặc tả token
Các quy tắc định nghiã biểu thức chính quy
1 ∈ là biểu thức chính quy, biểu thị cho tập {∈}
2 a là ký hiệu thuộc Σ, biểu thị cho tập {a}
3 r và s là hai biểu thức chính quy, biểu thị cho L (r) và L (s) thì:
ø a) (r) | (s) là biểu thức chính quy, biểu thị cho L(r) ∪ L(s)
b) (r) (s) là biểu thức chính quy, biểu thị cho L(r) L(s)
c) (r)* là biểu thức chính quy, biểu thị cho (L(r))*
d) r là biểu thức chính quy, biểu thị cho L(r)
Trang 6Thí dụ 3.1 Cho Σ = {a, b}
1 a|b
2 (a| b) | (b| a)
3 a*
Hai biểu thức chính quy tương đương r và s, ký hiệu r = s
2 Định nghĩa chính quy
Nếu Σ là tập ký hiệu căn bản, thì định nghiã chính quy là chuỗi định nghiã có dạng: d1 → r1
……
dn → rn
Thí dụ 3.2 letter → A | B | …|Z | a| b |…| z
digit → 0 |1| …| 9
id → letter ( letter | digit)*
Thí dụ 3.3 digit → 0 | 1 |… | 9
digits → digit digit*
optional_fraction → digits | ∈ optional_exponent → (E (+| - |∈) digits) | ∈
Trang 73.5 Nhận dạng token
Thí dụ 3.4 Cho văn phạm G:
stmt → if exp then stmt
| if exp then stmt else stmt
| ∈
exp → term relop term | term term → id | num
Định nghĩa chính 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 chính quy ta xây dựng bảng mẫu cho token như ở bảng 3.3 trang 74
Trang 83.6 Sơ đồ dịch
1 Miêu tả
8
other
2 3
8
> return (relop, NE)
4 return (relop, LT)
5
=
return (relop, EQ)
>
other
và =
=
other
(relop, EQ) return (relop, EQ)
*
*
*
Hình 3.5 Sơ đồ dịch nhận dạng token relop
Trang 9Lưu ý:
- Phần khai báo bao gồm khai báo hằng, biến biểu thị và các định nghĩa chính quy
- Phần quy tắc biên dịch là các 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
1 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}