1. Trang chủ
  2. » Luận Văn - Báo Cáo

Mô phỏng symbol table bằng bảng băm

13 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Mô Phỏng Symbol Table Bằng Bảng Băm
Tác giả ThS. Trần Ngọc Bảo Duy
Trường học Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Cấu trúc dữ liệu và giải thuật
Thể loại bài tập lớn
Năm xuất bản 2021
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 13
Dung lượng 381,25 KB
File đính kèm assignment3.zip (3 KB)

Nội dung

Mô phỏng symbol table bằng bảng băm Mô phỏng symbol table bằng bảng băm Mô phỏng symbol table bằng bảng băm Mô phỏng symbol table bằng bảng băm Mô phỏng symbol table bằng bảng băm Mô phỏng symbol table bằng bảng băm Mô phỏng symbol table bằng bảng băm Mô phỏng symbol table bằng bảng băm Mô phỏng symbol table bằng bảng băm Mô phỏng symbol table bằng bảng băm Mô phỏng symbol table bằng bảng băm Mô phỏng symbol table bằng bảng băm Mô phỏng symbol table bằng bảng băm Mô phỏng symbol table bằng bảng băm Mô phỏng symbol table bằng bảng băm Mô phỏng symbol table bằng bảng băm Mô phỏng symbol table bằng bảng băm Mô phỏng symbol table bằng bảng băm Mô phỏng symbol table bằng bảng băm Mô phỏng symbol table bằng bảng băm Mô phỏng symbol table bằng bảng băm

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH Cấu trúc liệu giải thuật - CO2003 Bài tập lớn MÔ PHỎNG SYMBOL TABLE BẰNG BẢNG BĂM Tác giả: ThS Trần Ngọc Bảo Duy TP HỒ CHÍ MINH, THÁNG 08/2021 TRƯỜNG ĐẠI HỌC BÁCH KHOA - ĐHQG-HCM KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH ĐẶC TẢ BÀI TẬP LỚN Phiên 1.0 Chuẩn đầu Sau hoàn thành tập lớn này, sinh viên ơn lại sử dụng thành thục: • Thiết kế sử dụng đệ quy • Lập trình hướng đối tượng • Các giải thuật tìm kiếm cấu trúc liệu bảng băm Dẫn nhập Symbol table (tạm gọi bảng ghi đối tượng) cấu trúc liệu quan trọng tạo ra, trì sử dụng trình biên dịch (compiler) nhằm lưu vết ngữ nghĩa danh hiệu (identifiers) lưu thông tin tên (name), thông tin kiểu (type), thông tin tầm vực (scope), v.v Trong tập lớn trước, sinh viên yêu cầu thực mô bảng ghi hoạt động danh sách Để tối ưu hóa cho q trình tìm kiếm, bảng băm cấu trúc liệu phù hợp để làm việc Ngoài ra, tập lớn này, sinh viên giới thiệu cách xây dựng bảng ghi đối tượng cho ngơn ngữ có sử dụng suy diễn kiểu (type inference) Ngôn ngữ suy diễn kiểu, nói nơm na, ngơn ngữ lập trình khai báo danh hiệu khơng khai báo tường minh kiểu, việc áp đặt kiểu danh hiệu kiểu gắn với phát biểu (statements) biểu thức (expressions) sử dụng danh hiệu Trong tập lớn, sinh viên yêu cầu thực mô bảng ghi đối tượng sử dụng cấu trúc liệu bảng băm 3.1 Mô tả Đầu vào Mỗi testcase tập tin đầu vào bao gồm dòng lệnh thiết lập tham số cho bảng băm (được mô tả mục 3.5) lệnh tương tác với bảng ghi đối tượng (được mô tả mục 3.6) Bài tập lớn môn Cấu trúc liệu giải thuật - HK năm học 2021 - 2022 Trang 1/12 TRƯỜNG ĐẠI HỌC BÁCH KHOA - ĐHQG-HCM KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH Sinh viên thấy ví dụ testcase thơng qua mục 3.2 u cầu Để hồn thành tập lớn này, sinh viên phải: Đọc toàn tập tin mô tả Tải xuống tập tin initial.zip giải nén Sau giải nén, sinh viên nhận tập tin: main.h, main.cpp, SymbolTable.h, SymbolTable.cpp, error.h, đó, sinh viên khơng phép sửa đổi tập tin khơng nằm danh mục dùng để nộp Sửa đổi file SymbolTable.h, SymbolTable.cpp để hoàn thành tập lớn đảm bảo hai yêu cầu sau: • Ít có lớp SymbolTable có phương thức đối tượng (instance method) public void run(string testcase) phương thức đầu vào cho lời giải Đối với testcase, đối tượng lớp tạo phương thức run đối tượng gọi với tham số tên file tập tin văn (chứa đoạn tương tác với bảng ghi đối tượng) • Chỉ có lệnh include file SymbolTable.h #include "main.h" include file SymbolTable.cpp #include "SymbolTable.h" Ngồi ra, khơng cho phép có #include khác tập tin Sinh viên yêu cầu thiết kế sử dụng cấu trúc liệu dựa cấu trúc liệu bảng băm học Sinh viên phải giải phóng toàn vùng nhớ xin cấp phát động chương trình kết thúc 3.3 Thơng tin đối tượng bảng ghi Thơng tin đối tượng (symbol) bao gồm: Tên danh hiệu (identifier) Mức khối mà danh hiệu thuộc (level of block) Sinh viên phải thiết kế lại thông tin lưu trữ để phù hợp với đề Trong trình tương tác với bảng băm, ta cần mã hóa thơng tin đối tượng thành khóa Khóa mã hóa số nguyên dạng ca1 a2 a3 a4 an đó: Bài tập lớn mơn Cấu trúc liệu giải thuật - HK năm học 2021 - 2022 Trang 2/12 TRƯỜNG ĐẠI HỌC BÁCH KHOA - ĐHQG-HCM KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH • c mức khối mà danh hiệu thuộc • a1 , a2 , , an giá trị số thập phân bảng mã ASCII ký tự danh hiệu sau trừ 48 Ví dụ 1: Ta có danh hiệu xB nằm mức khóa đối tượng • Mức khối nên c = • x = 120 nên ta mã hóa thành 120 − 48 = 72 B = 66 nên ta mã hóa thành 66 − 48 = 18 Như vậy, xB//1 mã hóa thành 17218 3.4 Các lỗi ngữ nghĩa Trong q trình tương tác, kiểm tra số lỗi ngữ nghĩa ném (thơng qua lệnh throw ngơn ngữ lập trình C/C++) tìm thấy: Lỗi khơng khai báo Undeclared kèm với danh hiệu không khai báo Lỗi khai báo lại Redeclared kèm với danh hiệu bị khai báo lại Lỗi khai báo không hợp lệ InvalidDeclaration kèm với danh hiệu bị khai báo không hợp lệ Lỗi không kiểu TypeMismatch kèm với lệnh gây lỗi Lỗi không suy diễn kiểu TypeCannotBeInferred kèm với lệnh gây lỗi Lỗi tràn bảng Overflow kèm với lệnh gây lỗi Lỗi khơng đóng lại khối UnclosedBlock kèm với mức khối khơng đóng (được mơ tả mục 3.6.4) Lỗi khơng tìm thấy khối tương ứng UnknownBlock Chương trình dừng lại khơng tiếp tục tương tác có lỗi xảy 3.5 Các thiết lập tham số cho bảng băm Băng bảm sử dụng tập lớn bảng băm sử dụng phương pháp giải đụng độ địa mở (open addressing) Vì vậy, thiết lập tham số cho bảng băm bao gồm thiết lập kích thước, thiết lập hàm băm thiết lập hàm dị tìm cần thiết cho tập Dịng thiết lập ln ln dịng testcase xuất lần Một thiết Bài tập lớn môn Cấu trúc liệu giải thuật - HK năm học 2021 - 2022 Trang 3/12 TRƯỜNG ĐẠI HỌC BÁCH KHOA - ĐHQG-HCM KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH lập viết dịng ln bắt đầu mã tương ứng với phương pháp dị tìm (probing) Ngồi ra, lệnh có nhiều tham số Tham số cách mã thiết lập khoảng trắng tham số cách khoảng trắng Tất tham số phải thỏa định dạng số tự nhiên tối đa có chữ số Ngồi ra, khơng có ký tự phân cách theo sau khác Ngược với quy định định dạng nêu đây, thiết lập sai, mô ném lỗi InvalidInstruction kèm với dòng thiết lập sai kết thúc 3.5.1 Phương pháp dị tìm tuyến tính - LINEAR • Định dạng chung: LINEAR đó: – kích thước bảng băm sử dụng – số sử dụng q trình dị tìm • Ý nghĩa: Khi đó, hàm băm hàm dị tìm tương ứng h(k) = k mod m hp(k, i) = (h(k) + ci) mod m với k khóa i số lần dị tìm 3.5.2 Phương pháp dị tìm bậc hai - QUADRATIC • Định dạng chung: QUADRATIC đó: – kích thước bảng băm sử dụng – , số sử dụng q trình dị tìm • Ý nghĩa: Khi đó, hàm băm hàm dị tìm tương ứng h(k) = k mod m hp(k, i) = (h(k) + c1 i + c2 i2 ) mod m với k khóa i số lần dị tìm Bài tập lớn môn Cấu trúc liệu giải thuật - HK năm học 2021 - 2022 Trang 4/12 TRƯỜNG ĐẠI HỌC BÁCH KHOA - ĐHQG-HCM KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH 3.5.3 Phương pháp băm đơi - DOUBLE • Định dạng chung: DOUBLE đó: – kích thước bảng băm sử dụng – số sử dụng q trình dị tìm • Ý nghĩa: Khi đó, hàm băm hàm dị tìm tương ứng h1 (k) = k mod m h2 (k) = + (k mod (m − 2)) hp(k, i) = (h1 (k) + cih2 (k)) mod m với k khóa i số lần dị tìm 3.6 Các lệnh tương tác Một lệnh viết dịng ln bắt đầu mã Ngồi ra, lệnh khơng có có hai tham số Tham số lệnh, có, cách mã khoảng trắng (space) Tham số thứ hai mã, có, cách với tham số khoảng trắng Ngồi ra, khơng có ký tự phân cách theo sau khác Ngược với quy định trên, lệnh sai, mô ném lỗi InvalidInstruction kèm với dòng lệnh sai kết thúc 3.6.1 Thêm đối tượng vào bảng ghi hoạt động - INSERT • Định dạng chung: INSERT ? đó: – tên danh hiệu, chuỗi ký tự bắt đầu ký tự chữ thường ký tự bao gồm ký tự chữ thường, in hoa, ký tự gạch _ ký tự số – ? số tham số cần phải truyền cho hàm danh hiệu khai báo đại diện cho mơt hàm Thành phần có danh hiệu hàm, ngược lại khơng có thành phần Việc khai báo danh hiệu thực mức tồn cục (mức 0) • Ý nghĩa: Đưa danh hiệu vào bảng ghi đối tượng So sánh với C/C++, tương tự việc khai báo biến mới, nhiên khai báo biến, ta chưa định kiểu liệu cho biến, gần giống với khái niệm auto decltype Bài tập lớn môn Cấu trúc liệu giải thuật - HK năm học 2021 - 2022 Trang 5/12 TRƯỜNG ĐẠI HỌC BÁCH KHOA - ĐHQG-HCM KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH • Giá trị in hình: Số khe (slot) phải qua trước đến vị trí khe trống đặt giá trị vào • Các lỗi xảy ra: – Redeclared khai báo lại danh hiệu khai báo trước – InvalidDeclaration khai báo hàm khối có mức khác – Overflow khai báo tìm vị trí trống phù hợp bảng băm Ví dụ 2: Với tập tin đầu vào gồm dòng: LINEAR 19 INSERT a1 INSERT b2 INSERT rj Do khơng có lỗi trùng tên (khai báo lại) nên chương trình in ra: 0 Bảng ghi đối tượng lúc Khe Giá trị b2//0 rj//0 10 11 12 13 14 15 16 17 18 a1//0 Ví dụ 3: Với tập tin đầu vào gồm dòng: LINEAR 19 INSERT x INSERT y INSERT x Do thêm danh hiệu x dòng số mà tiếp tục thêm danh hiệu x dòng số nên gây lỗi Redeclared nên chương trình in ra: 0 Redeclared: x 3.6.2 Gán giá trị cho đối tượng - ASSIGN • Định dạng chung: ASSIGN đó: Bài tập lớn mơn Cấu trúc liệu giải thuật - HK năm học 2021 - 2022 Trang 6/12 TRƯỜNG ĐẠI HỌC BÁCH KHOA - ĐHQG-HCM KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH – tên danh hiệu phải tuân theo luật nêu mục 3.6.1 – giá trị gán vào biến, bao gồm ba dạng: ∗ Hằng số: dãy số Ví dụ: 123, 456, 789 số đúng, cịn 123a, 123.5, 123.8.7 khơng số Hằng số xem có kiểu số (number) ∗ Hằng chuỗi: bắt đầu dấu nháy đơn (’), chuỗi bao gồm ký tự số, ký tự chữ, khoảng trắng kết thúc dấu nháy đơn Ví dụ: ’abc’, ’a 12 C’ chuỗi, cịn ’abc_1’, ’abC@u’ khơng chuỗi Hằng chuỗi xem có kiểu chuỗi (string) ∗ Một danh hiệu khác khai báo trước ∗ Một biểu thức gọi hàm bao bắt đầu tên danh hiệu kiểu hàm, dấu mở ngoặc tròn, danh sách rỗng tham số thực (chỉ số, chuỗi danh hiệu khai báo trước đó) phân cách với một dấu phẩy kết thúc dấu đóng ngoặc trịn Ví dụ, foo(1, 2) hay baz(a, 1) cách lời gọi hàm hợp lệ • Ý nghĩa: – Nếu hai thành phần phép gán có kiểu ta kiểm tra phù hợp cho việc gán giá trị đơn giản cho danh hiệu Quá trình kiểm tra diễn trước sau – Nếu hai thành phần phép gán chưa tìm kiểu, ta thực suy diễn kiểu theo quy tắc sau: ∗ Kiểu thành phần chưa biết suy diễn kiểu thành phần biết ∗ Kiểu tham số hình thức danh hiệu khai báo hàm phải suy diễn thành kiểu tham số thực truyền vào tham số thực có kiểu ngược lại ∗ Kiểu trả danh hiệu khai báo hàm phải suy diễn thành kiểu danh hiệu gán ngược lại • Giá trị in hình: Tổng số khe phải qua trước tìm thấy khe chứa thơng tin đối tượng cần tìm danh hiệu xuất lệnh thành cơng kiểm tra suy diễn • Các lỗi xảy ra: – Undeclared danh hiệu chưa khai báo xuất hai thành phần – TypeMismatch nếu: Bài tập lớn môn Cấu trúc liệu giải thuật - HK năm học 2021 - 2022 Trang 7/12 TRƯỜNG ĐẠI HỌC BÁCH KHOA - ĐHQG-HCM KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH ∗ Kiểu giá trị gán danh hiệu khác ∗ Lời gọi hàm có tên danh hiệu khơng phải kiểu hàm ∗ Các kiểu tham số thực không tương ứng với kiểu tham số hình thức khai báo ∗ Kiểu trả hàm không phù hợp với kiểu danh hiệu gán – TypeCannotBeInferred nếu: ∗ Cả hai thành phần phép gán (đối với danh hiệu khai báo hàm kiểu trả hàm) chưa suy diễn kiểu ∗ Tham số hình thức tham số thực tương ứng chưa suy diễn kiểu Ví dụ 4: Với tập tin đầu vào gồm dòng: LINEAR 19 INSERT x INSERT sum ASSIGN x ASSIGN x sum(5,x) INSERT z INSERT foo ASSIGN z foo(’abc’) Danh hiệu sum khai báo hàm có tham số, foo hàm có tham số Q trình suy diễn diễn sau: • Dịng thứ giúp ta suy diễn kiểu x kiểu number • Dịng thứ giúp ta suy diễn: – Tham số hình thức thứ hàm có kiểu số 5, tức kiểu number – Tham số hình thức thứ hai hàm có kiểu x, tức kiểu number – Kiểu trả hàm sum có kiểu x, tức number • Dịng thứ giúp ta suy diễn: – Tham số hình thức thứ hàm có kiểu chuỗi ’abc’, tức kiểu string – Kiểu trả foo kiểu z chưa có nên lỗi TypeCannotBeInferred ném Bài tập lớn môn Cấu trúc liệu giải thuật - HK năm học 2021 - 2022 Trang 8/12 TRƯỜNG ĐẠI HỌC BÁCH KHOA - ĐHQG-HCM KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH 3.6.3 Lời gọi hàm - CALL • Định dạng chung: CALL đó, biểu thức gọi hàm mô tả mục 3.6.2 • Ý nghĩa: lời gọi hàm khơng gán vào danh hiệu Quá trình suy diễn cho lời gọi tương tự với biểu thức nào, nhiên, kiểu trả hàm phải (hoặc suy diễn là) void • Giá trị in hình: Tổng số khe phải qua trước tìm thấy khe chứa thơng tin đối tượng cần tìm danh hiệu xuất lệnh thành công kiểm tra suy diễn • Các lỗi xảy ra: Undeclared, TypeMismatch, TypeCannotBeInferred 3.6.4 Mở đóng khối (block) - BEGIN/ END • Định dạng chung: BEGIN/ END • Ý nghĩa: Mở đóng khối tương tự với việc mở đóng { } C/C++ Khi mở khối mới, có số quy tắc sau: – Được phép khai báo lại tên danh hiệu khai báo trước – Khi tìm kiếm danh hiệu, ta phải tìm với khối Nếu khơng tìm tìm khối cha làm gặp khối toàn cục – Các khối có mức (level) xác định với khối tồn cục xác định mức tăng dần với khối – Khi khỏi khối, ta phải xóa hết danh hiệu khai báo khối khỏi bảng ghi đối tượng • Giá trị in ra: Chương trình khơng in với việc đóng mở block • Các lỗi xảy ra: UnclosedBlock ném ta khơng đóng lại khối mở UnknownBlock đóng lại khơng tìm dược khối bắt đầu Ví dụ 5: Với tập tin đầu vào gồm dòng: LINEAR 19 INSERT x1 INSERT y1 BEGIN INSERT x1 BEGIN INSERT u7 Bài tập lớn môn Cấu trúc liệu giải thuật - HK năm học 2021 - 2022 Trang 9/12 TRƯỜNG ĐẠI HỌC BÁCH KHOA - ĐHQG-HCM KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH END END Bảng ghi đối tượng sau thêm u7 là: Khe Giá trị u7//2 3.6.5 10 y1//0 11 12 13 14 15 x1//1 16 17 18 x1//0 Tìm đối tượng tương ứng với danh hiệu - LOOKUP • Định dạng chung: LOOKUP đó, tên danh hiệu phải tuân theo luật nêu mục 3.6.1 • Ý nghĩa: Tìm kiếm danh hiệu có nằm bảng hoạt động hay khơng So sánh với C/C++, tương tự tìm sử dụng biến • Giá trị in hình: Chỉ số khe chứa danh hiệu • Các lỗi xảy ra: Undeclared khơng tìm thấy danh hiệu tất tầm vực bảng ghi đối tượng Ví dụ 6: Với tập tin đầu vào gồm dòng: LINEAR 19 INSERT x1 INSERT y1 BEGIN INSERT x1 BEGIN INSERT u7 LOOKUP x1 END END Dịng LOOKUP x1 tìm thấy x1//1, nên dòng in 11 3.6.6 In bảng ghi hoạt động - PRINT • Định dạng chung: PRINT Bài tập lớn môn Cấu trúc liệu giải thuật - HK năm học 2021 - 2022 Trang 10/12 TRƯỜNG ĐẠI HỌC BÁCH KHOA - ĐHQG-HCM KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH • Ý nghĩa: In số giá trị lưu tương ứng vị trí liệu bảng ghi hoạt động • Giá trị in ra: số khe danh hiệu kèm theo mức khối tương ứng in cách khoảng trắng dòng, khe cách dấu ; khơng có khoảng trắng cuối dịng Ví dụ 7: Với tập tin đầu vào gồm dòng: LINEAR 19 INSERT x1 INSERT y1 BEGIN INSERT x1 BEGIN INSERT u7 PRINT END END Dòng PRINT in ra: u7//2;9 y1//0;11 x1//1;18 x1//0 Nộp Sinh viên nộp tập tin: SymbolTable.h SymbolTable.cpp, trước thời hạn đưa đường dẫn "Assignment - Submission" Có số testcase đơn giản sử dụng để kiểm tra làm sinh viên nhằm đảm bảo kết sinh viên biên dịch chạy Sinh viên nộp lần tùy ý có nộp cuối tính điểm Vì hệ thống khơng thể chịu tải nhiều sinh viên nộp lúc, sinh viên nên nộp sớm tốt Sinh viên tự chịu rủi ro nộp sát hạn chót Khi thời hạn nộp bài, hệ thống đóng nên sinh viên khơng thể nộp Bài nộp qua phương thức khác không chấp nhận Bài tập lớn môn Cấu trúc liệu giải thuật - HK năm học 2021 - 2022 Trang 11/12 TRƯỜNG ĐẠI HỌC BÁCH KHOA - ĐHQG-HCM KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH Một số quy định khác • Sinh viên phải tự hồn thành tập lớn này phải ngăn không cho người khác đánh cắp kết Nếu khơng, sinh viên bị xử lý theo quy định trường gian lận • Mọi định giảng viên phụ trách tập lớn định cuối • Sinh viên khơng cung cấp testcase sau chấm mà cung cấp thông tin chiến lược thiết kế testcase phân bố số lượng sinh viên theo testcase ———————HẾT——————— Bài tập lớn môn Cấu trúc liệu giải thuật - HK năm học 2021 - 2022 Trang 12/12

Ngày đăng: 07/01/2024, 18:02

HÌNH ẢNH LIÊN QUAN

Bảng ghi đối tượng lúc đó là - Mô phỏng symbol table bằng bảng băm
Bảng ghi đối tượng lúc đó là (Trang 7)
Bảng ghi đối tượng sau khi thêm u7 là: - Mô phỏng symbol table bằng bảng băm
Bảng ghi đối tượng sau khi thêm u7 là: (Trang 11)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w