Cách tốt nhất để tạo trình phân tích cú pháp trong C# để phân tích cú pháp ngôn ngữ của riêng tôi là gì? Lý tưởng nhất là tôi muốn cung cấp ngữ pháp, và lấy Abstract Syntax Trees làm đầu ra. Rất cám ơn, NestorCách tốt nhất/nhanh nhất để viết trình phân tích cú pháp trong C#
Trả lời
Tôi đã có trải nghiệm tốt với ANTLR v3. Cho đến nay, lợi ích lớn nhất là nó cho phép bạn viết các trình phân tích cú pháp LL (*) với các lookahead vô hạn - chúng có thể khá tối ưu, nhưng ngữ pháp có thể được viết theo cách đơn giản và tự nhiên nhất mà không cần phải tái cấu trúc và phân tích cú pháp hiệu suất thường không phải là một việc lớn (tôi hy vọng bạn không viết một trình biên dịch C++), đặc biệt là trong các dự án học tập.
Nó cũng cung cấp phương tiện khá tốt để xây dựng có ý nghĩa ASTs mà không cần viết bất kỳ mã nào - cho mỗi ngữ pháp sản xuất, bạn chỉ ra mã thông báo "" quan trọng hoặc tiểu sản xuất, và đó sẽ trở thành một nút cây. Hoặc bạn có thể viết một cây sản xuất.
Có một cái nhìn tại các văn phạm tiếng ANTLR sau (liệt kê ở đây theo thứ tự tăng độ phức tạp) để có được một ý chính của nó như thế nào trông và cảm thấy
- JSON grammar - với tác phẩm cây
- Lua grammar
- C grammar
Bạn có thể nghiên cứu mã nguồn cho Mono C# compiler.
Cảm ơn. Tôi không cố gắng viết một trình phân tích cú pháp cho C#, nhưng là một trình phân tích cú pháp cho ngôn ngữ của riêng tôi, trình phân tích cú pháp được viết bằng C#. Cảm ơn nhiều vì gợi ý của bạn mặc dù. – Nestor
Mặc dù vẫn đang ở giai đoạn đầu phiên bản beta Oslo Công cụ mô hình hóa ngôn ngữ và MGrammar từ Micro mềm đang cho thấy một số lời hứa.
Có. Tôi đã thấy rằng .. Tôi thích trình soạn thảo (điều chỉnh cú pháp tô sáng cho ngữ pháp của tôi). Nhưng hơi sớm để sử dụng nó .. có vẻ như vậy. – Nestor
@Nestor - Tôi đồng ý rằng còn quá sớm để sử dụng nó, nhưng tôi nghĩ nó xứng đáng được đề cập đến. –
+1 cho nhận xét của bạn. Đúng rồi.Tôi sẽ sử dụng Oslo nếu nó được phát hành cuối cùng. – Nestor
Lex và yacc vẫn là mục yêu thích của tôi. Ít người biết đến nếu bạn chỉ mới bắt đầu, nhưng cực kỳ đơn giản, nhanh chóng và dễ dàng một khi bạn đã có tiếng lóng.
Bạn có thể thực hiện bất kỳ điều gì bạn muốn; tạo mã C#, xây dựng các ngữ pháp khác, mô phỏng hướng dẫn, bất cứ điều gì.
Nó không đẹp, đó là định dạng dựa trên văn bản và LL1, do đó cú pháp của bạn phải phù hợp với điều đó.
Mặt khác, nó ở mọi nơi. Có rất nhiều sách O'reilly về nó, rất nhiều mẫu mã, rất nhiều ngữ pháp được tạo sẵn và rất nhiều thư viện ngôn ngữ bản địa.
Có một bài báo ngắn here khi xây dựng một trình phân tích cú pháp LL (1) ở đây, tất nhiên bạn cũng có thể sử dụng trình tạo.
- 1. Trình phân tích cú pháp tốt nhất cho C#?
- 2. Trình phân tích cú pháp JSON tốt nhất cho Qt?
- 3. Trình phân tích cú pháp XML tốt nhất cho PHP
- 4. Tạo trình phân tích cú pháp Brainfuck, phương pháp phân tích cú pháp vòng lặp tốt nhất là gì?
- 5. 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
- 6. Cần trình phân tích cú pháp C++
- 7. Trình phân tích cú pháp SSI được viết bằng PHP?
- 8. Làm cách nào để viết tốt nhất các trường hợp thử nghiệm đơn vị cho trình phân tích cú pháp?
- 9. trình phân tích cú pháp asn.1 trong C/Python
- 10. Cách tốt nhất để tái sử dụng trình phân tích cú pháp Lua là gì?
- 11. Phương pháp phân tích cú pháp textfile tốt nhất trong C#?
- 12. Trình phân tích cú pháp Java được viết bằng JavaScript
- 13. Kết hợp phân tích cú pháp phân tích cú pháp, phân tích cú pháp và phân tích cú pháp rừng
- 14. Trình tạo trình phân tích cú pháp và trình phân tích cú pháp cho Common Lisp
- 15. Trình phân tích cú pháp phân tích cú pháp Haskell để gặp phải [...]
- 16. Trình phân tích cú pháp tùy chọn cho C/C++?
- 17. Mã phân tích cú pháp C#
- 18. Trình phân tích cú pháp để đọc Mục tiêu-C
- 19. Trình phân tích cú pháp Wiki nào?
- 20. Cách hiệu quả nhất để phân tích cú pháp Xml
- 21. Tìm kiếm trình phân tích cú pháp mã C#
- 22. cách phân tích cú pháp yêu cầu http trong C++
- 23. Sự khác biệt giữa trình phân tích cú pháp SAX XML, Kéo trình phân tích cú pháp & Trình phân tích cú pháp DOM trong android
- 24. Phân tích cú pháp IPv6 trong C
- 25. Cách tốt nhất để phân tích ngữ pháp đơn giản?
- 26. Cách tốt nhất để phân tích cú pháp trang web trong Ruby là gì?
- 27. Cách tốt nhất để phân tích cú pháp dòng lệnh args trong Bash là gì?
- 28. Cách tốt nhất để phân tích cú pháp tệp Excel trong Perl là gì?
- 29. Cách tốt nhất để phân tích cú pháp int trong Javascript
- 30. Trình phân tích cú pháp YAML tốt nhất trong elisp là gì?
Cảm ơn! Đề xuất tốt – Nestor
Cảm ơn Pavel lần nữa. Con trỏ rất hữu ích. – Nestor