2009-07-14 76 views
8

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#

+0

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? –

Trả lời

0

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.

8

Đó 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.

+0

+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). –

+0

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

6

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.

0

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.

-1

Tôi đã sử dụng QWhale .NET Editor. Nó không miễn phí, nhưng nó khá tốt.

0

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.

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