Tôi đang tìm trình phân tích cú pháp và/hoặc lexer có thể tùy chỉnh có thể cho phép tôi tạo trình kiểm tra cú pháp tùy chỉnh trong C#. Về cơ bản người dùng sẽ nhập mã một dòng mã (tùy chỉnh) và trình kiểm tra cú pháp sẽ có thể trả lời nếu nó được viết chính xác hay không.Trình biên dịch biên dịch trong C#
Trả lời
Từ here:
LINQPad sử dụng một số bên thứ ba thành phần trong giao diện người dùng. Trình soạn thảo truy vấn sử dụng điều khiển SyntaxEditor của Actipro (một sản phẩm rất được đánh bóng); các tính năng của "IntelliSense" dựa trên sự kết hợp của các thư viện từ Actipro Phần mềm và ICSharpCode (từ dự án SharpDevelop).
Tôi đã không sử dụng bất kỳ sản phẩm nào được đề cập trong trích đoạn đó (ngoài LINQPad - mà tôi khuyên bạn nên sử dụng!) Nhưng nghĩ nó có thể bắt đầu di chuyển đúng hướng.
Đó là Irony. Hãy chắc chắn để đọc các cuộc thảo luận, bởi vì nó rất nhiều đang xảy ra ở đó. Sử dụng bản phát hành cũ từ tháng 11 hoặc sử dụng bản phát hành mới nhất, nhưng sau đó đảm bảo bạn hiểu nội dung trong bản phát hành đó và những gì không có.
Đối với hầu hết mọi thứ, bản phát hành tháng 11 sẽ hoạt động tốt (sử dụng nó trong một dự án thú cưng).
Irony cho phép xây dựng một cây cú pháp trừu tượng (AST) từ bất kỳ ngữ pháp nào bạn có thể xác định trực tiếp trong mã C#. Nó cũng hỗ trợ đánh giá (tức là diễn giải mã) và thậm chí không khó để xây dựng mã từ nó. Hoặc, tốt, chuyển đổi nó thành một DLR (Dynamic Language Runtime) AST.
+1 Đối với Irony, không được sử dụng cho bất cứ điều gì nhưng chơi thử nghiệm, nhưng trông giống như một CC tuyệt vời (Compiler Compiler). –
Tôi đã sử dụng nó để đánh giá biểu thức (nghĩa là máy tính). Thật tuyệt vời, bởi vì nó làm cho mọi việc trở nên dễ dàng hơn nhiều. Tôi thích nó bởi vì nó không đòi hỏi chỉ học một ngôn ngữ ngữ pháp để tạo ngữ pháp của bạn - tất cả trong C# và thật dễ dàng để chèn mã vào nó để hỗ trợ những điều mà tác giả không có ý định. – OregonGhost
Tôi thích ANTLR, it supports C# cũng như Java, Python, C, v.v. Ưu điểm của việc sử dụng ANTLR là tài liệu rất tốt (ví dụ, sách, hướng dẫn, v.v.) và sử dụng rộng rãi.
Nếu những gì người dùng nhập vào là một dòng mã tương ứng với biểu thức truyền thống, bạn có thể viết mã phân tích cú pháp đệ quy đệ quy cho điều này sau vài giờ và thực hiện với nó.
Nếu đầu vào của bạn là một đoạn của một ngôn ngữ phức tạp (ví dụ: bạn muốn chấp nhận một dòng mã C#), bạn sẽ cần một trình phân tích cú pháp mạnh mẽ và trình tạo trình phân tích cú pháp. Tuy nhiên, bạn sẽ thấy rằng hầu hết các trình tạo trình phân tích cú pháp không cung cấp cho bạn cách tốt để phân tích cú pháp mảnh của ngôn ngữ mà bạn xác định, nhưng bạn có thể hack theo cách đó bằng cách xác định quy tắc ngữ pháp gốc cần đề cập các nonterminals tương ứng với "dòng" mà bạn sẵn sàng chấp nhận.
Tôi đã sử dụng QWhale .NET Editor. Nó không miễn phí, nhưng nó khá tốt.
Tôi sử dụng trình phân tích cú pháp gốc đệ quy kết hợp phân tích cú pháp và lexing mà tôi đã viết từ đầu trong C# trong dự án ngôn ngữ của riêng tôi. Tôi thấy nó đã viết các quy tắc ngữ pháp tương đối dễ dàng. Xem here for an example grammar và xem here for the unit tests.
- 1. Trình biên dịch/trình biên dịch/trình biên dịch C++
- 2. Lỗi trình biên dịch C++ trong xamltypeinfo.g.cpp
- 3. Lỗi trình biên dịch C++ trong netbeans
- 4. Trình biên dịch có trình biên dịch không?
- 5. Phát triển iPhone - Trình biên dịch của Trình biên dịch!
- 6. Hiệu suất biên dịch mã bằng biên dịch biên dịch
- 7. Quá trình biên dịch
- 8. Trình biên dịch C/C++ có tối ưu hóa trên các đơn vị biên dịch không?
- 9. Tìm kiếm trình biên dịch C# => Trình biên dịch LINQ
- 10. C++ Biên dịch chuỗi thời gian biên dịch
- 11. Trình biên dịch C++ tốt cho GCC
- 12. C để trình biên dịch brainfuck?
- 13. biên dịch C++ thành chương trình "thực"
- 14. Trình biên dịch C dành cho Windows?
- 15. Trình biên dịch C ??) thay thế
- 16. Có trình biên dịch là dịch vụ cho C++ không?
- 17. Biên dịch C++ với Cygwin
- 18. Biên dịch C++ cho JVM
- 19. Cài đặt Trình biên dịch C/C++ trong Android
- 20. Trình biên dịch C++ biên dịch các tên biến như thế nào?
- 21. Biên dịch C# thành Gốc?
- 22. biên dịch C# lỗi CS0433
- 23. biên dịch chương trình java
- 24. Lỗi trình biên dịch ArrayList
- 25. Ví dụ trình biên dịch
- 26. Trình biên dịch có điều kiện dựa trên chỉ thị trình biên dịch trong Delphi 2009
- 27. Lỗi biên dịch C# Array.Contains()
- 28. Trình biên dịch cho Haskell
- 29. Biên dịch mã C# trong ứng dụng
- 30. Biên dịch của SQLite3 trong C++
Chỉ là cú pháp tô sáng hoặc bạn cần thực thi mã do người dùng nhập? –