Tôi đang tìm cách phân tích mã C++ để lấy một số thông tin cơ bản về các lớp. Tôi không thực sự cần nhiều thông tin từ chính mã, nhưng tôi cần nó để xử lý những thứ như macro và mẫu. Tóm lại, tôi muốn trích xuất "cấu trúc" của mã, những gì bạn sẽ hiển thị trong một sơ đồ UML.Những thư viện nào có sẵn để phân tích cú pháp C++ để trích xuất thông tin loại
Đối với mỗi lớp/struct/đoàn/enum/typedef trong cơ sở mã, tất cả tôi cần (sau khi mẫu & macro đã được xử lý) là:
- tên của họ
- Không gian tên, trong đó họ sống
- các lĩnh vực chứa bên trong (tên loại, tên của trường và truy cập hạn chế, chẳng hạn như tin/có thể thay đổi/etc)
- Chức năng chứa bên trong (kiểu trả về, tên, thông số)
- Các tuyên bố tập tin
- Line/số cột (hoặc byte trong tập tin), nơi định nghĩa của dữ liệu này bắt đầu
Các hướng dẫn thực tế trong các mã là không thích hợp cho mục đích của tôi.
Tôi dự đoán rất nhiều người nói rằng tôi chỉ nên sử dụng regex cho điều này (hoặc thậm chí là Flex & Bison), nhưng chúng không thực sự hợp lệ vì tôi cần xử lý trước và xử lý mẫu đúng cách.
Ngay cả khi bạn mở rộng bộ tiền xử lý và chỉ thị mẫu, regexp sẽ không đủ mạnh để thu thập thông tin loại này một cách chính xác. –