Tôi đang cố viết một ngữ pháp trong EBNF (viết một lý do thực sự tốt, nó phải là EBNF) và đang tìm một vài tiện ích cho nó - nếu có giao diện GUI có thể tạo sẽ là tuyệt vời, nhưng điều tôi đang tìm kiếm nhiều nhất là cái gì đó có thể kiểm tra ngữ pháp, ví dụ để xem nó là LALR (n), và nếu có, giá trị của n là gì. Các tiện ích như vậy có tồn tại không? Có bất kỳ công cụ viết ngữ pháp hữu ích nào khác mà tôi nên biết không (tôi không tìm kiếm trình tạo trình phân tích cú pháp).Công cụ viết ngữ pháp
Trả lời
Lấy đề xuất của Steven Dee thêm một bước nữa, bạn có thể muốn xem ANTLRWorks, một công cụ phát triển GUI tương tác cho ngữ pháp ANTLR.
Để kiểm tra xem ngữ pháp có cho phép một thuật toán phân tích cú pháp nhất định hay không, chỉ cần đặt nó vào trình tạo trình phân tích cú pháp. Trong trường hợp LALR (1), chuyển ngữ pháp sang YACC để xem nó có phát hiện xung đột hay không.
ANTLR là trình tạo trình phân tích cú pháp GUI trong Java có khả năng phân tích ngữ pháp và bao thanh toán rộng rãi. Kiểm tra FAQ; nó có thể hỗ trợ những gì bạn đang tìm kiếm.
Sử dụng TinyPG! một C#/VB đang tuyệt vời all-in-one biên dịch biên dịch với một giao diện gọn nhẹ, nơi bạn xây dựng phân tích cú pháp của bạn với RegEx, EBNF, và viết nó để làm điều gì đó với cây phân tích cú pháp!
Dưới đây là tóm tắt ngắn gọn và cung cấp thông tin mà tôi đã làm trước đó, điều này cũng liên kết bạn với các bản tải xuống.
hiểu biết của tôi về TinyPG:
TinyPG cho phép bạn viết & phát triển:
- Xác định Terminals sử dụng Regular Expressions.
- Xác định Non -terminals và phân tích cú pháp quy tắc trong Extended BNF meta-syntax.
- Viết Compiler mã trong C# hoặc VB, trong TinyPG.
Nó có IDE tích hợp, Chỉ Windows (được tạo trong C# .NET, mã nguồn mở).
Nó cho phép bạn thử & xem trước Cụm từ thông dụng sử dụng công cụ RegEx sẵn có . Cú pháp RegEx được hỗ trợ trong .NET có nghĩa là ngay cả mã số phân tích cú pháp đã xuất của bạn được xuất ra sử dụng Biểu thức chính quy của .NET.
Bạn viết EBNF để mô tả ngôn ngữ của sự lựa chọn của bạn(Dưới đây là một số tự do có sẵn BNF Grammers that describe modern programming languages (C, Java, JavaScript, C#, VB.NET, SQL-89)
Sử dụng TinyPG, bạn RegEx cùng với EBNF bạn kết quả đầu ra một phân tích cây(see this diagram).
Bây giờ bạn sẽ làm gì với những phân tích cây? bạn viết C#/VB code(trong TinyPG, theo quy tắc ngữ pháp BNF) cho Trình biên dịch/Phiên dịch/Biên dịch của bạn.(bên TinyPG, mở "đơn giản expression2.tpg" tập tin trong mẫu được cung cấp để xem một bản demo của một máy tính 'biên dịch')
TinyPG cho phép bạn Compile và Test bạn tokenizer + phân tích cú pháp + biên dịch, trong TinyPG IDE, và cuối cùng kết quả đầu ra mã nguồn phân tích cú pháp trong C# .NET hoặc VB.NET (lựa chọn của bạn), với sẵn sàng để sử dụng lớp.
Tuyệt vời Trình biên dịch biên dịch All-in-one cho công chúng. Thưởng thức!
PS: Đúng nếu tôi sai về bất kỳ điều nào trong số này.
câu trả lời tuyệt vời, chúc mừng. –
CoCo/R C# bị thiếu trong danh sách. Nó là đơn giản để sử dụng, rất linh hoạt và đặc biệt hữu ích có máy phát điện mã cho một loạt các ngôn ngữ
Coco/R cho C#, Java, C++, F #, VB.Net, Oberon, các ngôn ngữ khác
- 1. Viết công cụ nhận dạng giọng nói
- 2. Công cụ hợp nhất ngữ nghĩa
- 3. Công cụ quét/phân tích cú pháp
- 4. Viết công cụ đề xuất cơ bản
- 5. viết một ngôn ngữ cụ thể cho miền di động
- 6. Công cụ/ngôn ngữ đánh dấu cú pháp hoạt động với nhiều người chỉnh sửa
- 7. Có công cụ lint cho Ngôn ngữ Shading OpenGL không?
- 8. Công cụ đánh dấu cú pháp C# để viết blog trên BlogSpot
- 9. Mẹo để viết mã bằng các công cụ thù địch?
- 10. Giải pháp Công cụ Báo cáo Javafx
- 11. Công cụ đánh dấu cú pháp cho Java
- 12. Công cụ đánh dấu cú pháp cho WPF
- 13. công cụ tìm kiếm tốt nhất được viết bằng python
- 14. Viết Công cụ Trò chơi 3D của riêng tôi
- 15. Có công cụ viết lại url cho Tomcat/Java không?
- 16. Công cụ jQuery -> Phương pháp tiêu diệt chú giải công cụ?
- 17. Ngữ pháp ANTLR cho Scala?
- 18. boost :: tinh thần soạn thảo ngữ pháp từ ngữ pháp
- 19. Các phương pháp hay nhất để viết trình phân tích cú pháp ngôn ngữ lập trình
- 20. Phân tích cú pháp ngữ pháp không có ngữ cảnh bằng Python
- 21. File ReadAllLines biến ngôn ngữ nước ngoài thành ngữ pháp ()
- 22. Các giải pháp thay thế cho công cụ bytecode Java
- 23. QT Properties - cú pháp đường hoặc công cụ phát triển
- 24. các công cụ khác biệt về nhận thức cú pháp?
- 25. Viết một mini-ngôn ngữ
- 26. Làm thế nào để bắt đầu viết một công cụ bảo hiểm mã?
- 27. JSF. giải pháp viết lại URL cần
- 28. Công cụ Bảo hiểm Mã cho PHP
- 29. Ngữ pháp tổng hợp
- 30. Viết lexer Xtext/ANTLR tùy chỉnh mà không cần tệp ngữ pháp
Trong trường hợp người khác tự hỏi: http://en.wikipedia.org/wiki/EBNF –