Tôi không nghĩ kêu vang từng bước có thể phân tích các file C++, nhưng nó là một trong những mục tiêu dự án này: http://clang.llvm.org/features.html
Tôi đã viết một cái gì đó tương tự như đối với dự án năm cuối cùng của tôi. Nó không phải là trình soạn thảo C++, mà là một plugin Visual Studio, mà nhiệm vụ chính đã được cải thiện C++ intellisense (như Visual Assist X).
Khi tôi đang viết dự án này, tôi cũng đã suy nghĩ về trình phân tích cú pháp gia tăng C++, nhưng tôi chưa tìm thấy giải pháp phù hợp nào. Để giải quyết vấn đề intelliSense C++, tôi đã sử dụng trình phân tích cú pháp C++ bình thường từ GCC. Tuy nhiên nó đã được làm chậm, để phân tích cú pháp tập tin sau mỗi yêu cầu hoàn thành mã (ctrl + không gian), chỉ cần thử bao gồm tăng :: tinh thần. Để làm cho dự án này hoạt động đúng cách, tôi phân tích các tệp trong nền và sau mỗi yêu cầu hoàn thành mã, tôi đã so sánh tệp hiện tại với phiên bản trước đó (thông qua khác) để phát hiện các thay đổi được thực hiện từ phân tích cú pháp cuối cùng. Có những thay đổi đó, tôi đã cập nhật cây cú pháp, chủ yếu bằng cách thêm hoặc xóa các biến.
Ngoại trừ phân tích gia tăng, cũng có một vấn đề khác với các dự án như thế này. Chủ yếu là bạn sẽ phân tích cú pháp mã C++ đang được chỉnh sửa để mã không hợp lệ. Với ngữ pháp C++ phức tạp, đôi khi trình phân tích cú pháp sẽ không thể phục hồi từ các lỗi cú pháp, vì vậy nó sẽ không phát hiện chính xác một số ký hiệu trong mã.
Một vấn đề khác là trình phân tích cú pháp/trình biên dịch C++. Hãy nói rằng tôi đang sử dụng làm việc trong Visual Studio và tôi đã sử dụng một số VC + + trình biên dịch cụ thể trong mã của tôi. Trình phân tích cú pháp Clang sẽ không thể phân tích cú pháp chính xác.
Ai đó muốn tạo bản sao Visual Studio [để phát hiện lỗi trước khi biên soạn] :) – Earlz
Dự án thú vị. Tôi đã chờ đợi một thời gian cho một người nào đó để viết một IDE dựa trên Clang. Nếu bạn kết thúc việc xây dựng một IDE đầy đủ, hãy xem xét sử dụng CMake làm các tệp hệ thống/dự án xây dựng của nó. – Tronic
Có lẽ libclang của ['clang_reparseTranslationUnit()'] (http://clang.llvm.org/doxygen/group__CINDEX__TRANSLATION__UNIT.html#ga524e76bf2a809d037934d4be51ea448a) có thể đáp ứng nhu cầu của bạn? – bames53