Phương pháp đệ qui không quay lui

Một phần của tài liệu ctdich (Trang 250 - 268)

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()

12 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)

Một phần của tài liệu ctdich (Trang 250 - 268)

Tải bản đầy đủ (PPT)

(268 trang)