2010-02-24 48 views
10

Có bất kỳ tệp ngữ pháp C++ hiện có nào cho ANTLR không?Có tệp ngữ pháp C++ hoạt động cho ANTLR không?

Tôi đang tìm cách lex, không phân tích cú pháp một số tệp mã nguồn C++.

Tôi đã xem trên ANTLR grammar page và có vẻ như có một danh sách được tạo bởi Sun Microsystems here.

Tuy nhiên, dường như đó là Trình phân tích cú pháp được tạo.

Có ai có thể chỉ cho tôi một tệp Lexer hoặc ngữ pháp C++ ANTLR không?

Trả lời

2

Trình phân tích cú pháp C++ là khó khăn để tạo.

Tôi không thể nói với kinh nghiệm về sử dụng ngữ pháp C++ của ANTLR. Here I discuss những gì tôi đã học bằng cách đọc các ghi chú đính kèm với ghi chú tôi đã thấy tại trang ANTLR; về bản chất, tác giả đã tạo ra một ngữ pháp không đầy đủ. Và đó chỉ là C++ 98. Nó đã được một thời gian kể từ khi tôi nhìn; có thể có những người khác.

DMS Software Reengineering Toolkit của chúng tôi có robust C++ front end.

Các lexer xử lý tất cả các cruft cho ANSI, GCC3, MS Visual Studio 2008, trong đó có lớn độ chính xác số dấu chấm động vv

[EDIT: 12/2011. Bây giờ xử lý C++ 11 và OpenMP chỉ thị]

[EDIT: 3/2015: Bây giờ xử lý C++ 14 trong cả hai biến thể GCC và MS. See some parse trees here on SO]

Có "chỉ" một trình phân tích cú pháp thực sự không hữu ích lắm. Trên và ngoài "chỉ phân tích cú pháp", giao diện người dùng của chúng tôi sẽ xây dựng AST, xây dựng các bảng biểu tượng chính xác (cho C++, điều này cực kỳ khó làm), thực hiện phân tích lưu lượng cục bộ và cho phép bạn thực hiện các chuyển đổi chương trình, v.v. Life After Parsing.

+3

Tôi đã xem trang web của bạn, có vẻ như bạn có một số công cụ tuyệt vời với mức giá hợp lý, nhưng trang web của bạn có thể thực hiện với một số công việc trong cả cấu trúc và giao diện. –

+0

@Andre: bất kỳ nhận xét mang tính xây dựng nào mà bạn có thể thực hiện đều được chào đón; chúng tôi luôn quan tâm đến việc cải thiện. Vui lòng gửi thư đến "[email protected]". –

+0

Dự án của bạn so sánh như thế nào, ví dụ, [Clang] (http://clang.llvm.org/), tất cả những gì bạn nói, miễn phí? Tôi đang jesting, nhưng vẫn còn, quan tâm đến câu trả lời của bạn! – rubenvb

Các vấn đề liên quan