- Băi tập nđng cao
5.5. Vấn đề xử lý lỗi ngữ nghĩa
Thông bâo về lỗi Mơ tả vă vị trí lỗi
Khắc phục lỗi để tiếp tục kiểm tra phần chương trình nguồn cịn lại Lỗi xuất hiện gđy ảnh hưởng đến câc luật kiểm tra lỗi: phải thiết kế
kiểu hệ thống để câc luật có thể đương đầu với câc lỗi kiểu
- Nội dung thảo luận
Câc lỗi ngữ nghĩa hay gặp khi lập trình trín Visual C++.
Bộ đặc tả kiểm tra kiểu của ngơn ngữ C++ trong mơi trường Turbo C++.
- u cầu SV chuẩn bị
Câc vấn đề khâc liín quan đến kiểm tra kiểu, đọc chương 5 tăi liệu 1, chương 5 tăi liệu 2, chương 4 tăi liệu 3.
- Băi tập bắt buộc
1. Xâc định kiểu cho câc cđu lệnh sau: a) var a : integer; a := a + 0.5; b) var a : integer; if a+5 then a := 0;
c) var a : integer; a := 0; while a<10 do a := a[0] - 1; 2. Văn phạm sau dùng để định danh danh sâch ký hiệu lă list:
P → D; E
D → D; D | id : T
T → char | integer | list of T E → literal | num | id | (L) L → E, L | E
Hêy viết câc luật ngữ nghĩa để xâc định kiểu cho E vă L. 3. Viết câc biểu thức kiểu cho câc kiểu dữ liệu sau đđy:
a) Một mảng của câc con trỏ có kích thước từ 1 đến 100, trỏ đến câc đối tượng lă câc số thực;
b) Mảng hai chiều của câc số ngun, hăng có kích thước từ 0 đến 9, cột từ -10 đến 10;
61
c) Câc hăm mă miền định nghĩa lă câc hăm với câc đối số nguyín, trị lă con trỏ trỏ đến câc số nguyín vă miền xâc định của nó lă câc mẫu tin chứa số nguyín vă câc ký tự.
- Băi tập nđng cao
4. Giả sử có một khai bâo C như sau: typedef struct {
int a, b; } CELL, *PCELL; CELL foo[100]; PCELL bar(x, y); int x;
CELL y {…}
Viết câc biểu thức kiểu cho câc kiểu dữ liệu foo vă bar.
5. Giả sử rằng kiểu của mỗi định danh lă một miền con của số ngun. Cho biểu thức với câc phĩp tôn +, -, *, div vă mod như trong Pascal. Hêy viết quy tắc kiểm tra kiểu để gân mỗi biểu thức con văo miền giâ trị mă nó sẽ nằm trong đó.
6. Giả sử rằng kiểu của mỗi định danh lă một miền con của số nguyín. Cho biểu thức với câc phĩp toân +, - , * , div vă mod như trong Pascal, hêy viết quy tắc kiểm tra kiểu để gân mỗi biểu thức con văo vùng miền con giâ trị mă nó sẽ nằm trong đó.
7. Căi đặt khối phđn tích ngữ nghĩa.
8. Thiết kế vă căi đặt bảng ký hiệu cho chương trình dịch.
- Tăi liệu tham khảo
1. Compilers : Principles, Technique and Tools. A.V. Aho, M. Lam, R.
Sethi, J.D.Ullman. - Addison -Wesley 2nd Edition, 2007. Chương 5. 2. Giâo trình chương trình dịch 2nd Edition. Phạm Hồng Nguyín. NXB
ĐHQG Hă Nội, 2009. Chương 5.
- Cđu hỏi ơn tập
1. Mục đích, nhiệm vụ của kiểm tra kiểu. 2. Sự tương đương giữa câc biểu thức kiểu.
3. Ĩp kiểu lă gì, câc trường hợp ĩp kiểu. Cho ví dụ minh họa.