2. Phương pháp phân tích cú pháp trên xuống
2.4. Phương pháp đệ qui không quay lui
- Về mặt nguyên lý giống pp tiên đoán.
- Khác về lập trình: không tra bảng tiên đoán M mà mô phỏng trực tiếp.
- Thay stack bằng sự đệ qui trong chương trình.
- Một k/h chưa kết thúc: bdiễn bằng 1 biểu đồ cú pháp
- Một biểu đồ cú pháp: bdiễn bằng 1 CT con
Giáo trình Kiến trúc máy tính và Hệ điều hành
251
2. Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui
Biểu đồ cú pháp:
• K/h kết thúc đặt:
• K/h chưa kết thúc đặt:
- Ví dụ: ETE’
E: T E’
Giáo trình Kiến trúc máy tính và Hệ điều hành
252
CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
2. Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui
CT con biểu diễn cho biểu đồ cú pháp:
(1)Sự kết tiếp của các nút: sự kết tiếp của các đoạn CT tương ứng.
ví dụ: có đoạn ct t()
1 2 t(1) ; t(2)
Giáo trình Kiến trúc máy tính và Hệ điều hành
253
2. Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui
CT con biểu diễn cho biểu đồ cú pháp:
(2)Sự rẽ nhánh tạo thành cấu trúc chọn
1
2
3
If k/htiepfirst(1) Then t(1)
Elseif k/htiepfirst(2) Then t(2) Elseif k/htiepfirst(3) Then t(3) Else baoloi;
Giáo trình Kiến trúc máy tính và Hệ điều hành
254
CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
2. Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui
CT con biểu diễn cho biểu đồ cú pháp:
(3) Lặp kiểm tra đk sau
(4)Lặp kiểm tra đk trước
While k/htiepfirst() do t()
Repeat t()
Until k/htiepfirst()
Giáo trình Kiến trúc máy tính và Hệ điều hành
255
2. Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui
CT con biểu diễn cho biểu đồ cú pháp:
(5)
(6)
a If k/htiep=a Then
k/htiep=k/htieptheo trong xâu x Else baoloi;
B goi B //t(B);
Giáo trình Kiến trúc máy tính và Hệ điều hành
256
CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
2. Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui
Thuật toán:
k/htiep: ký hiệu kết thúc;
function Dockh:ký hiệu kết thúc; {đọc k/hiệu tiếp trong x}
Procedure Baoloi; {đưa thông báo lỗi, dừng}
Procedure I;{các Ctcon biểu diễn AΔ}
Giáo trình Kiến trúc máy tính và Hệ điều hành
257
2. Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui
Thuật toán:
Procedure PTCP;
Begin k/htiep:=Dockh;
S;
if k/htiep=$ then x đúng CP else baoloi;
End.
Giáo trình Kiến trúc máy tính và Hệ điều hành
258
CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
2. Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui
Ví dụ: E TE’
E’+TE’ | T FT’
T’*FT’ | F(E) | id
Giáo trình Kiến trúc máy tính và Hệ điều hành
259
2. Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui
Ví dụ: Biểu đồ cú pháp
T E’
E:
T E’
E’: +
F T’
T:
F T’
T’: *
F: ( E )
id
Giáo trình Kiến trúc máy tính và Hệ điều hành
260
CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
2. Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui
Ví dụ: giải thuật các ctcon tương ứng k/htiep: ký hiệu kết thúc;
function Dockh:ký hiệu kết thúc; {đọc k/hiệu tiếp trong x}
Procedure Baoloi; {đưa thông báo lỗi, dừng}
Giáo trình Kiến trúc máy tính và Hệ điều hành
261
2. Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui
Ví dụ: giải thuật các ctcon tương ứng Procedure E;
Begin
T; Ephay;
End;
Giáo trình Kiến trúc máy tính và Hệ điều hành
262
CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
2. Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui
Ví dụ: giải thuật các ctcon tương ứng
Procedure Ephay;
Begin
If k/htiep=+ Then
Begin k/htiep:=Dockh;
T;
Ephay;
End;
End;
Giáo trình Kiến trúc máy tính và Hệ điều hành
263
2. Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui
Ví dụ: giải thuật các ctcon tương ứng Procedure T;
Begin F;
Tphay;
End;
Giáo trình Kiến trúc máy tính và Hệ điều hành
264
CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
2. Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui
Ví dụ: giải thuật các ctcon tương ứng
Procedure Tphay;
Begin
If k/htiep=* Then
Begin k/htiep:=Dockh;
F;
Tphay;
End;
End;
Giáo trình Kiến trúc máy tính và Hệ điều hành
265
2. Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui
Procedure F;
Begin
If k/htiep=id Then k/htiep:=Dockh Else
If k/htiep=( Then
Begin k/htiep:=Dockh;
E;
if k/htiep=) Then k/htiep:=Dock
Else baoloi;
End
Else baoloi; End;
Giáo trình Kiến trúc máy tính và Hệ điều hành
266
CHƯƠNG 4. CÁC PHƯƠNG PHÁP PHÂN TÍCH CÚ PHÁP
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
2. Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui
Thuật toán:
Procedure PTCP;
Begin k/htiep:=Dockh;
E;
if k/htiep=$ then x đúng CP else baoloi;
End.
Giáo trình Kiến trúc máy tính và Hệ điều hành
267
2. Phương pháp phân tích cú pháp trên xuống 2.4. Phương pháp đệ qui không quay lui
Bài tập:
Xây dựng giải thuật đệ qui không quay lui cho các VP LL(1) trong phần bài tập vài phép biến đổi về VP LL(1)