CÂU H Ỏ I ÔN T ẬP MÔN CHƯƠNG TRÌNH DỊ CH I. PH Ầ N LÝ THUY Ế T (Không ki ể m tra gi ữ a k ỳ ) 1. Trình bày định nghĩa chương trình dị ch và phân lo ại chương trình dị ch (trang 5-6). 2. Trình bày giai do ạn phân tích và giai đoạ n t ổ ng h ợ p c ủa chương trình dị ch (trang 7-8) (không c ầ n v ẽ hình). 3. V ẽ hình ví d ụ m ộ t quá trình d ị ch m ộ t bi ể u th ứ c (trang 11). 4. Trình bày phương pháp phân tích Top Down (trang 60) . 5. Trình bày phương pháp phân tích Bottom up (trang 62 -63). 6. Trình bày thu ậ t toán tính First(X) và First( ) (trang 77-78). 7. Trình bày thu ậ t toán tính Follow(A) và L ậ p b ả ng phân tích t ất đị nh LL(1) (trang 78-79). 8. Trình bày điề u ki ện để m ột văn phạ m là LL(1), gi ải thích ý nghĩa củ a t ừng điề u ki ệ n (trang 80). 9. Trình bày m ục đích, nhiệ m v ụ c ủ a b ả ng ký hi ệu trong chương trình dị ch, các kh ả năng làm việ c v ớ i b ả ng ký hi ệ u (trang 140,141) (không c ầ n v ẽ hình). 10. Trình bày cách t ổ ch ứ c b ả ng ký hi ệ u b ằng cây đị nh danh và danh sách ph ạ m vi (trang 245, 246) (không c ầ n v ẽ hình). II. PH Ầ N BÀI T Ậ P VÀ VI Ế T CODE (Ôn gi ữ a k ỳ t ừ câu 1-4) 1. Cho t ậ p s ả n xu ấ t c ủ a m ột văn phạ
ậ p b ả ng tính FIRST và FOLLOW cho các ký hi ệ u không k ế t thúc. b) L ậ p b ả ng phân tích t ất định LL(1) cho văn phạ m trên . Văn phạ m trên có ph ải là văn pham LL(1) hay không?
ự c hi ệ n quá trình phân tích LL(1) v ới xâu vào nào đó theo dạ ng : Ngăn xế p Đầ u vào Đầ u ra . . . . . . . . . 2. S ử a l ạ i ph ầ n khai báo t ừ t ố , khai báo t ừ khóa và vi ế t l ạ i hàm next_token() c ủ a chương trình phân tích từ v ự ng (theo phương pháp diễ n gi ải đồ th ị chuy ể
ỉ cho m ộ t ph ần nào đó củ a ngôn ng ữ SLANG. Ví d ụ : S ử a l ạ i ph ầ n khai báo t ừ t ố , khai báo t ừ khóa và và vi ế t l ạ i hàm next_token() c ủa chương trình phân tích từ v ự ng (theo phương pháp diễ n gi ả i đồ th ị chuy ể
ỉ cho câu l ệ nh WHILE (không quan tâm đế n các câu l ệ nh trong thân c ủ a WHILE). Ph ầ n <quan h ệ \> c ủ a WHILE ch ỉ có các phép so sánh: \> , >=, = . Ph ầ n <bi ể u th ứ c> trong <quan h ệ \> ch ỉ có các phép tính c ộ ng, tr ừ . Ph ầ n <toán h ạ ng> trong <bi ể u th ứ c> ch ỉ có tên và s ố . ( Chú ý: Chương trình luôn b ắt đầ u b ằ ng t ừ khóa BEGIN và k ế t thúc là END.) 3. Trong chương trình phân tích từ v ựng theo phương pháp diễ n gi ải đồ th ị chuy ể n cho ngôn ng ữ SLANG: a) Trình bày công d ụ ng c ủ a hàm identifier() và bi ế n ident_lexeme. Vi ế t n ộ i dung hàm identifier(). b) Trình bày công d ụ ng c ủ a hàm number() và bi ế n num_value. Vi ế t n ộ i dung hàm number(). c) Trình bày công d ụ ng c ủ a hàm look_up() 4. Vi ế t n ộ i dung m ộ t s ố hàm c ủa chương trình phân tích cú pháp theo phương pháp đệ quy trên xu ố ng cho ngôn ng ữ SLANG. 5. Cho trướ c m ột chương trình viế t b ằ ng ngôn ng ữ SLANG. Hãy l ậ p b ả ng ký hi ệ u theo cách dùng cây đị nh danh và danh sách ph ạm vi khi phân tích đế n dòng nào đó (trang 248, 249). 6. Vi ế t n ộ i dung hàm exit_scope() để x ử lý b ả ng ký hi ệ u khi ra kh ỏi chương trình con vi ế t b ằ ng ngôn ng ữ SLANG (trang 257-258). 7. Vi ế t n ộ i dung hàm insert_definition() để chèn thêm b ả n ghi m ớ i vào b ả ng ký hi ệ u khi d ịch chương trình viế t b ằ ng ngôn ng ữ (trang 258-259) 8. Cho trướ c m ột chương trình viế t b ằ ng ngôn ng ữ SLANG. Gi ả s ử đang phân tích đế n v ị trí nào đó. Hãy: - Trình bày các th ủ t ụ c cú pháp và các t ập đồ ng b ộ tương ứ ng (trang 288). - Trình bày chi ến lượ c khôi ph ụ c l ỗ i khi th ừ a ho ặ c thi ế u t ừ t ố nào đó (trang 289-290) C Ấ U TRÚC ĐỀ THI M ỗ i đề có 5 câu Câu 1. Lý thuy ế t (2 đ i ể
ậ p (1,5 đ i ể
ế t code (2 đ i ể
ế t code (2,5 đ i ể
ậ p ho ặ c Vi ế t code (2 đ i ể |