Tải bản đầy đủ (.pdf) (22 trang)

CHƯƠNG TRÌNH DỊCH - CHƯƠNG 2 pps

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (330.93 KB, 22 trang )

Giáo trình Kiến trúc máy tính và Hệ
điều hành
30
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
- Mục đích
- Nội dung
- Otomat hữuhạn đơn định
- Bộ phân tích từ vựng
- Bảng danh biểu
Giáo trình Kiến trúc máy tính và Hệ
điều hành
31
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
1. Mục đích
- Chia cắt xâu vào (CT nguồn) thành dãy các
từ tố.
- Hai cách cài đặt
• Sử dụng mộtlượtchoviệc phân tích từ
vựng Æ dãy các token Æphân tích cú
pháp.
• Phân tích từ vựng dùng chung mộtlượt
với phân tích cú pháp. Mộtlầnchỉ phát
hiện1 token gọilàtừ tố tiếp đến.
Giáo trình Kiến trúc máy tính và Hệ
điều hành
32
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
2. Nội dung


- Đọc xâu vào từng ký tự một Æ gom lại
thành token đến khi gặpkýtự không thể kết
hợp thành token.
- Luôn luôn đọctrướcmộtkýtự.
- Loạibỏ các ký tự trống và chú thích.
- Chuyểnnhững thông tin củanhững từ tố
(vănbản, mã phân loại) vừa phát hiệncho
bộ phân tích cú pháp.
- Phát hiệnlỗi.
Giáo trình Kiến trúc máy tính và Hệ
điều hành
33
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
2. Nội dung
- Sự giao tiếpgiữabộ phântíchtừ vựng và bộ
phân tích cú pháp
CT
nguồn
Bộ
phân tích
từ vựng
Gửitoken
Bộ
phân tích
cú pháp
Yêu cầutoken
Bảng
danh biểu
Giáo trình Kiến trúc máy tính và Hệ

điều hành
34
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
3. Otomat hữuhạn đơn định
3.1. Định nghĩa: M(Σ, Q, δ, q0, F)
Σ: bộ chữ vào
Q: tậphữuhạncáctrạng thái
q0 ∈ Q: trạng thái đầu
F ⊆ Q: tậpcáctrạng thái kết thúc
δ: hàm chuyểntrạng thái có dạng δ(q,a)=p
Vớiq,p∈ Q, a ∈ Σ
¾ δ(q,a)=p: nghĩalàở trạng thái q, đọc a, chuyển
sang trạng thái p
Giáo trình Kiến trúc máy tính và Hệ
điều hành
35
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
3. Otomat hữuhạn đơn định
3.2. Biểudiễn các hàm chuyểntrạng thái
 Dùng bảng: sử dụng ma trận δ có:
- Chỉ số hàng: trạng thái
- Chỉ số cột: ký hiệuvào
- Giá trị tạihàngq, cộta làtrạng thái p,
sao cho δ(q,a)=p
Giáo trình Kiến trúc máy tính và Hệ
điều hành
36
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG

CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
3. Otomat hữuhạn đơn định
3.2. Biểudiễn các hàm chuyểntrạng thái
 Dùng bảng:
Ví dụ: có hàm chuyểncủamộtOtomatnhư
sau: δ(1,a)=2, δ(2,b)=2, δ(2,c)=2
δ abc
12
222
Giáo trình Kiến trúc máy tính và Hệ
điều hành
37
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
3. Otomat hữuhạn đơn định
3.2. Biểudiễn các hàm chuyểntrạng thái
 Hình vẽ:
- mỗitrạng thái q∈Q được đặttrongcácvòng
tròn.
- Trạng thái bắt đầu q0 có thêm dấu‘>’ởđầu.
- Trạng thái kết thúc q∈F được đặttrongvòng
tròn kép.
- Các cung nốitừ trạng thái q sang trạng thái
p
có mang các nhãn a∈Σ, có nghĩa δ(q,a)=p
Giáo trình Kiến trúc máy tính và Hệ
điều hành
38
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG

3. Otomat hữuhạn đơn định
3.2. Biểudiễn các hàm chuyểntrạng thái
 Hình vẽ:
Ví dụ: có hàm chuyểncủamộtOtomatnhư
sau: δ(1,a)=2, δ(2,b)=2, δ(2,c)=2
1
2
a
b
c
Giáo trình Kiến trúc máy tính và Hệ
điều hành
39
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
3. Otomat hữuhạn đơn định
3.2. Biểudiễn các hàm chuyểntrạng thái
 Nhậnxét:
- Biểudiễn hàm chuyểntrạng thái bằng
hình vẽ có ưu điểmhơn. Trong hình vẽ ta
xác định đầy đủ tấtcả các thành phần
của Otomat.
- Biểudiễnbằng bảng xác định hàm
chuyểntrạng thái, tậpcáctrạng thái, bộ
chữ vào nhưng không phân biệt được
trạng thái bắt đầ
uvàtrạng thái kết thúc.
Giáo trình Kiến trúc máy tính và Hệ
điều hành
40

CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
3. Otomat hữuhạn đơn định
3.3. Hoạt động của Otomat
- Đọccáckýhiệucủaxâuvàotừ trái sang phải
,
bắt đầutừ trạng thái q0.
- Mỗibước đọcmộtkýhiệu thì chuyển sang
trạng thái theo δ. Có thểđọc xong hay không
đọc xong xâu vào.
Giáo trình Kiến trúc máy tính và Hệ
điều hành
41
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
3. Otomat hữuhạn đơn định
3.3. Hoạt động của Otomat
- Đọc xong xâu vào đếnmộttrạng thái p∈F
thì xâu vào được đoán nhận(xâu đúng).
- Đọc xong xâu vào mà rơi vào trạng thái p∉F
thì xâu vào không được đoán nhận.
- Không đọc xong xâu vào (do δ rơi vào điểm
không xác định) thì xâu vào không được
đoán nhận.
Giáo trình Kiến trúc máy tính và Hệ
điều hành
42
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
3. Otomat hữuhạn đơn định

3.4. Ví dụ: Xác định Otomat đoán nhậnsố nh

phân. M(Σ, Q, δ, q0, F)
Σ: {0, 1, trắng}
Q: {0, 1, 2}
q0: 0
F : {2}
δ: δ(0,trắng)=0, δ(0,0)=1, δ(0,1)=1,
δ(1,0)=1, δ(1,1)=1, δ(1,trắng)=2
Giáo trình Kiến trúc máy tính và Hệ
điều hành
43
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
3. Otomat hữuhạn đơn định
3.4. Ví dụ: Xác định Otomat đoán nhậnsố nhị
phân
0
1
0|1
0
1
trắng
2
trắng
Giáo trình Kiến trúc máy tính và Hệ
điều hành
44
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG

q
4.Lậpbộ phân tích từ vựng
Ngoài các hình qui ướccủa Otomat thông
thường lạicóthêm:
*
Trạng thái kết thúc và
trả lui ký tự vừa đọc
Giáo trình Kiến trúc máy tính và Hệ
điều hành
45
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
4. Lậpbộ phân tích từ vựng
4.1. Phương pháp mô phỏng
- Mỗitrạng thái: tương ứng vớimột đoạn
chương trình
- Nốitiếp các trạng thái: nốitiếp2 đoạnchương
trình tương ứng
-
-
Lệnh rẽ nhánh
Lệnh lặp
Giáo trình Kiến trúc máy tính và Hệ
điều hành
46
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
4.Lậpbộ phân tích từ vựng
4.1. Phương pháp mô phỏng
Max=10; {độ dài tối đacủa 1 danh biểu}

Type
Loaikytu=(conso,cham, Ttu, trang, Ccai);
Loaituto=(nguyen,thuc,Toantu,
Danhbieu);
Xau=Array[1 max] of char ;
Var Kytutiep:char;
Procedure Dockytu(var c:char);
…{Đọckýtự tiếp, ký tự này luôn luôn được
đọctrước}
Function LoaiKT(c:char):Loaikytu;
…{Cho biếtloạicủakýtự c}
Procedure Baoloi;
…{Cho một thông báo lỗi}
Procedure Tuvung(var ma:Loaituto;var x:xau);
Var i:0 max;
Begin
For i:=1 to max do x[i]:=’’;
I:=0;
While loaikytu(kytutiep)=trang do
Dockytu(kytutiep);
Case loaikytu(kytutiep) of
Conso: Begin
Repeat I:=i+1;
x[i]:=kytutiep;
Dockytu(kytutiep);
Until Loaikytu(kytutiep)<>conso;
Ma:=nguyen;
Giáo trình Kiến trúc máy tính và Hệ
điều hành
47

TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
4.Lậpbộ phân tích từ vựng
4.1. Phương pháp mô phỏng
If loaikytu(kytutiep)=cham then
Begin Repeat I:=i+1;
x[i]:=kytutiep;
Dockytu(kytutiep);
Until loaikytu(kytutiep)<>Conso
Ma:=thuc;
End;
End;
Cham: Begin Baoloi;
Repeat I:=i+1;
x[i]:=kytutiep;
Dockytu(kytutiep);
Until loaikytu(kytutiep)<>conso;
Ma:=thuc; End;
Ttu: begin I:=i+1; x[i]:=kytutiep;
ma:=toantu; Dockytu(kytutiep);
end;
Ccai: begin
Repeat
If i<max then
Begin I:=i+1;
x[i]:=kytutiep;
end;
Dockytu(kytutiep);
Until (loaikytu(kytutiep)<>Ccai)
and (loaikytu(kytutiep)<>conso);

Ma:=danhbieu;
End;
End
;
{
case
}
End
;
{
tuvun
g
}
Giáo trình Kiến trúc máy tính và Hệ
điều hành
48
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
4.Lậpbộ phân tích từ vựng
4.1. Phương pháp điều khiểnbằng bảng
Var bangchuyen: array[1 6,loaikytu] of 0 6;
Mảng này đượcnạpdữ liệunhư sau:
trang Conso Cham Ttu Ccai
112456
202300
303000
403000
500000
600006
Giáo trình Kiến trúc máy tính và Hệ

điều hành
49
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
4. Lậpbộ phân tích từ vựng
4.1. Phương pháp điều khiểnbằng bảng
Procedure Tuvung(var ma:loaituto; var x:xau);
Begin
trangthai:=1;
trangthaitiep:=bangchuyen[trangthai,
loaikytu(kytutiep)];
i:=0;
Repeat
i:=i+1;
x[i]:=kytutiep;
trangthai:=trangthaitiep;
Dockytu(kytutiep);
trangthaitiep:= bangchuyen[trangthai,
loaikytu(kytutiep)];
Until trangthaitiep=0;
Case trangthai of
2: ma:=nguyen;
3: ma:=thuc;
4: baoloi;
5:ma:=toantu;
6: ma:=danhbieu;
End;{case}
End; {Tuvung}
Giáo trình Kiến trúc máy tính và Hệ
điều hành

50
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
5. Bảng danh biểu
Gồm các token và các thuộctínhcủatoken
Chỉ số Token Trị từ vựng Các thuộc tính khác
01
02 Num 45
03 Id A
04 Id B
05
06 Relation <
07 Then Then
08 operator +
Giáo trình Kiến trúc máy tính và Hệ
điều hành
51
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG
CHƯƠNG 2. PHÂN TÍCH TỪ VỰNG
6. Các cấutrúcdữ liệuchobảng các danh biểu
- Tổ chứctuầntự: mảng, danh sách liên kết,
danh sách móc nối
- Tổ chức cây tìm kiếmnhị phân

×