2010-08-07 32 views

Trả lời

1

Bạn đang tìm kiếm thế hệ từ ngữ pháp CFG? I E. thế hệ dây được chấp nhận bởi ngữ pháp? Điều này có thể là một ý tưởng tốt để kiểm tra tính chính xác của ngữ pháp, nhưng hãy nhớ rằng tập hợp các chuỗi được chấp nhận có lẽ là vô hạn. Bất kỳ lỗi thực sự xấu nào cũng phải rõ ràng trong đặc tả ngữ pháp, và hy vọng bằng việc kiểm tra LL-ness.

Tôi không biết bất kỳ công cụ nào trong thế giới ANTLR, cũng không tìm kiếm nhanh trên Google (E) thế hệ BNF tiết lộ bất kỳ điều gì hữu ích.

Tuy nhiên, không khó để cuộn máy phát điện của riêng bạn nếu hiệu suất và đó không phải là vấn đề. Prolog sẽ đến với tâm trí, có rất nhiều loại rác có sẵn, nhưng nếu bạn không muốn rời khỏi Java, tôi nghi ngờ việc homebrewing là con đường để đi. Vui vẻ của nó anyway.

0

Giả sử bạn tạo câu (chuỗi mã thông báo) từ ngữ pháp ANTLR của bạn. Tại sao bạn nghĩ rằng trình phân tích cú pháp dựa trên ANTLR của bạn sẽ phản đối chúng?

Điều bạn thực sự phải làm là tạo ra các chuỗi không hoàn toàn hợp pháp. Vì vậy, những gì bạn cần là một máy phát điện có thể tạo ra các chuỗi sai.

Do ANTLR tạo ra một tập hợp các quy trình từ ngữ pháp ANTLR của bạn, tôi nghĩ sẽ rất khó để tạo ra trình tạo câu bằng cách sử dụng trình phân tích cú pháp được tạo. Những gì bạn cần là mô hình ngữ pháp rõ ràng. Và điều này đã có sẵn cho bạn: ANTLR đầu vào ngữ pháp.

Một biến chứng khác mà tôi thấy là tạo ra các mã thông báo hợp pháp từ các regex tạo nên các định nghĩa mã thông báo. Một lần nữa, bạn cần xử lý đầu vào ANTLR để làm điều này.

Xử lý cả hai cách này có vẻ đơn giản về mặt kỹ thuật. Động cơ tốt nhất để sử dụng làm nền tảng có khả năng là mặt trước ANTLR, mà rõ ràng là phân tích các thông số kỹ thuật ANTLR, và vì vậy phải giữ một số biểu diễn của đầu vào ANTLR.

+0

Tôi không tin rằng bạn là chính xác, như một người sử dụng ANTLR Tôi không thú vị trong kiểm tra khả năng sử dụng ngữ pháp để phân tích cú pháp chuỗi đầu vào, khả năng và hành vi của nó cũng được ghi nhận. Không, điều tôi quan tâm đến thử nghiệm là hành vi của người xem của khách truy cập của tôi đối với đồ thị đối tượng tùy ý - hình ảnh tôi không thể nghĩ ra được tài liệu cho bản thân mình. Tôi rất giống một công cụ tạo ra các chuỗi ngẫu nhiên cho ngữ pháp được cung cấp. Một công cụ như vậy sẽ cho phép tạo ra các thử nghiệm từ đầu đến cuối. – Groostav

+1

@Groostav: mọi người đều hiểu rằng vấn đề là tạo ra các chuỗi ngẫu nhiên từ ngôn ngữ hoặc từ các biến thể gần giống. Vấn đề là, làm thế nào bạn sẽ tạo ra những chuỗi? Quan điểm của tôi là không thể dễ dàng thực hiện nó từ các trình phân tích cú pháp ANTLR được tạo ra; đó là giống như cố gắng giải thích mã tùy ý đó là Turing-cứng (có thể không phải của nó, nhưng không ai làm cho lập luận rằng điều này là dễ dàng để làm). Tạo tác duy nhất mà bạn phải sử dụng để tạo ra các chuỗi đó là ngữ pháp ANTLR rõ ràng, bao gồm các khía cạnh từ vựng. Bản thân ANTLR không xuất hiện để cung cấp cho bạn bất kỳ trợ giúp nào. Điều gì sẽ? –

0

Đã tìm kiếm một cái gì đó tương tự và tìm thấy GramTest, có vẻ phù hợp, nhưng thay vì ngữ pháp ANTLR sử dụng ngữ pháp BNF làm đầu vào.

Công cụ này cho phép bạn tạo các trường hợp thử nghiệm dựa trên người dùng tùy ý ngữ pháp được xác định. Ngữ pháp đầu vào được đưa ra trong ký hiệu BNF. Các ứng dụng tiềm năng bao gồm thử nghiệm tự động và mờ.

Đối với thông tin nền họ càng liên kết đến các blogposts sau:

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