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]
(1)CHƯƠNG 3
PHÂN TÍCH TỪ VỰNG 3.1 Vai trị cuả phân tích từ vựng
1 Token, mẫu, trị từ vựng
Baûng 3.1 Bảng danh biểu token
Token Trị từ vựng Ý nghĩa mẫu
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ệ số
chuỗi gồm ký tự chữ số, bắt đầu ký tự chữ
(2)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 1 Cặp đệ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
nguồn token
(3)A : = B * - eof
p1 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
(4)2 Phương pháp cầm canh
A : = B * X EOF - 2 EOF EOF
N ký tự N ký tự
p1 p2
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 +
(5)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
1 ∈ biểu thức quy, biểu thị cho tập {∈} a ký hiệu thuộc Σ, biểu thị cho tập {a}
3 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))*
(6)Thí dụ 3.1 Cho Σ = {a, b} a|b
2 (a| b) | (b| a) a*
Hai biểu thức quy tương đương r s, ký hiệu r = s 2 Định nghĩa quy
Nếu Σ tập ký hiệu bản, định nghiã quy chuỗi định nghiã có dạng: d1 → r1
……
dn → rn
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 | ∈
(7)3.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 quy
if → if then → then else → else relop → < | <= | > | >= | <> | =
id → letter (letter | digit)*
num → digit+ (.digit+ | ∈) ( E ( + | - | ∈) digit+ | ∈ ) delim → blank | tab | newline
ws → delim+
(8)3.6 Sơ đồ dịch 1 Miêu tả
0
8
Bắt đầu > = other
2
Start < = return (relop, LE)
6
8
> return (relop, NE)
4 return (relop, LT)
=
return (relop, EQ) >
other
6 Hình 3.4 Sơ đồ dịch cho >=
vaø =
0
= other
(relop, EQ)
return (relop, EQ) *
*
*
(9)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
1 Automat hữu hạn không tất định (NFA) Thí dụ: Cho NFA:
(10)