Đại học Bách Khoa TP.HCM (HCMUT) - VNU-HCM Môn học: Nguyên lý Ngôn ngữ Lập trình (CO3005)
Học kỳ: 251 (Năm học 2025-2026)
Repository này chứa source code hoàn chỉnh cho Bài tập lớn (Assignment) môn Nguyên lý Ngôn ngữ Lập trình. Dự án xây dựng một trình biên dịch cho ngôn ngữ OPLang - một ngôn ngữ lập trình hướng đối tượng đơn giản được thiết kế cho mục đích giáo dục.
Dự án này đã đạt kết quả cao (98 - 100/100) trong học kỳ 251 và có thể dùng làm tài liệu tham khảo chất lượng cho các bạn sinh viên khóa sau.
Project được chia làm 4 phần bài tập lớn (Assignment) chính, mô phỏng quy trình hoạt động của một trình biên dịch thực tế:
Xây dựng bộ phân tích từ vựng và ngữ pháp sử dụng ANTLR4.
- Nhiệm vụ: Định nghĩa token và grammar rules cho OPLang.
- Mã nguồn:
oplang_compiler/src/grammar/
Chuyển đổi Parse Tree (sinh ra từ ANTLR4) thành cây cú pháp trừu tượng (AST).
- Nhiệm vụ: Viết Visitor để duyệt cây và tạo các object Node tương ứng.
- Mã nguồn:
oplang_compiler/src/astgen/
Kiểm tra lỗi ngữ nghĩa tĩnh của chương trình.
- Nhiệm vụ: Kiểm tra kiểu (Type checking), kiểm tra tầm vực (Scope), tính duy nhất của biến/hàm, v.v.
- Mã nguồn:
oplang_compiler/src/semantics/
Sinh mã máy (Bytecode).
- Nhiệm vụ: Duyệt cây AST đã kiểm tra lỗi để sinh ra mã Jasmin (Assembly cho JVM). Chương trình sau đó có thể chạy trên Java Virtual Machine.
- Mã nguồn:
oplang_compiler/src/codegen/
Mỗi phần của project đều đi kèm với bộ test case đầy đủ để đảm bảo tính đúng đắn và bao quát các trường hợp biên (edge cases).
- Vị trí:
oplang_compiler/tests/ - Số lượng: 100 test cases cho mỗi phần (Tổng cộng 400 test cases).
test_lexer.py: Test nhận diện token.test_parser.py: Test cú pháp.test_ast_gen.py: Test cấu trúc cây AST.test_checker.py: Test bắt lỗi ngữ nghĩa.test_codegen.py: Test kết quả chạy thực tế của mã sinh ra.
Để hiểu rõ về cú pháp và ngữ nghĩa của OPLang, vui lòng tham khảo các tài liệu đặc tả đính kèm trong thư mục dự án:
- Đặc tả ngôn ngữ (Syntax & Grammar):
- Ràng buộc ngữ nghĩa & Các loại lỗi (Semantics):
Mã nguồn chi tiết và hướng dẫn chạy project nằm trong thư mục oplang_compiler.
Để bắt đầu, hãy di chuyển vào thư mục dự án và làm theo hướng dẫn trong file README chi tiết:
cd oplang_compiler
# Đọc file README.md tại đây để biết cách cài đặt môi trường và chạy lệnh make