Skip to content

shInNei/oplang-compiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

OPLang Compiler - Principles of Programming Languages (PPL)

Đạ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)

Language Score Target

📖 Giới thiệu

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.

🗂 Cấu trúc Project

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ế:

1. Lexical & Syntax Analysis (Lexer & Parser)

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/

2. Abstract Syntax Tree (AST Generation)

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/

3. Static Semantic Analysis (Checker)

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/

4. Code Generation

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/

🧪 Testing

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.

📚 Tài liệu đặc tả (Specification)

Để 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:

  1. Đặc tả ngôn ngữ (Syntax & Grammar):
  2. Ràng buộc ngữ nghĩa & Các loại lỗi (Semantics):

🚀 Hướng dẫn cài đặt và chạy

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages