Tôi có ngữ pháp ANTLR và tôi muốn làm mờ trình phân tích cú pháp của mình.Có tiện ích nào được đưa ra một ngữ pháp ANTLR sẽ tạo ra các chuỗi phù hợp không?
Trả lời
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.
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.
Đã 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:
- 1. Có tiện ích C# nào cho các mẫu phù hợp trong cây (cú pháp phân tích cú pháp) không?
- 2. Có tiện ích java nào để tạo ra các phản hồi đa phần của http không?
- 3. C# ANTLR ngữ pháp?
- 4. Mã thông báo lexer của Antlr khớp với các chuỗi tương tự, điều gì sẽ xảy ra nếu lexer tham lam gây ra lỗi?
- 5. Tiện ích biên tập ngữ pháp cho ngữ pháp không có ngữ cảnh trong Java
- 6. Tiện ích con có thể có một ngữ cảnh không?
- 7. Chỉ bao gồm các file phù hợp với một mô hình được đưa ra trong một diff đệ quy
- 8. Lấy mẫu trên các trung tâm texel không đưa ra kết quả phù hợp, OpenGL, C++
- 9. Công ty mở: bạn sẽ đưa ra lời khuyên nào?
- 10. file_exists() hy vọng tham số 1 là một đường dẫn hợp lệ, chuỗi được đưa ra
- 11. Những phạm vi nào được đưa ra?
- 12. Có một chuỗi các hoán đổi sẽ tạo ra tất cả các hoán vị có thể không?
- 13. Có phải chuỗi được tạo ra Axis2 an toàn không?
- 14. Có tệp ngữ pháp C++ hoạt động cho ANTLR không?
- 15. Ngữ pháp ANTLR cho Scala?
- 16. Tridion RepositoryLocalObject.GetBluePrintChú pháp phương pháp (BluePrintChainFilter) đưa ra ngoại lệ cho các mục được chia sẻ
- 17. Ngữ pháp CSS tốt trong Antlr v4
- 18. Có hợp pháp khi sử dụng các hiệu ứng phụ trong trường hợp ngoại lệ do constexpr đưa ra không?
- 19. mktime -1 khi đưa ra một struct tm hợp lệ
- 20. C#, ANTLR, ECMAScript vấn đề ngữ pháp
- 21. Có bao nhiêu đối tượng chuỗi sẽ được tạo ra bởi phiên bản JVM 1,6
- 22. Java String ReplaceAll phương pháp đưa ra lỗi lặp lại bất hợp pháp?
- 23. numpy.shape đưa ra câu trả lời không phù hợp - tại sao?
- 24. ANTLR: Làm cách nào để giải thích hành vi của ngữ pháp nhận ra hậu tố của mã Java?
- 25. Những ngoại lệ nào có thể tạo ra một tham chiếu dịch vụ được tạo ra?
- 26. lisp lọc ra kết quả từ danh sách không phù hợp với vị ngữ
- 27. Tôi nên đưa ra ngoại lệ nào đối với các kết hợp đối số xấu/bất hợp pháp trong Python?
- 28. Phương pháp hiệu quả để có được một số, không thể tạo ra từ bất kỳ kết hợp XORing nào
- 29. Điều gì xảy ra với Monitor.Enter mà không có một Monitor.Exit phù hợp?
- 30. Delegate.CreateDelegate sẽ không đưa ra giá trị trả về - cố tình, hoặc không hoạt động?
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
@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ẽ? –