2009-09-10 38 views

Trả lời

0

Tại sao không cho ANTLR một đi - có vẻ như nó có một ngữ pháp thực hiện cho ECMAScript:

http://www.antlr.org/grammar/list

ANTLR dường như có một C# runtime là tốt, mặc dù tôi đã chỉ được sử dụng nó từ Java.

2

Tôi nghĩ bạn sẽ phải tự xây dựng nó, nhưng có những gợi ý trong quá trình thực hiện.

Ngữ pháp JavaScript hoàn chỉnh sẽ khả dụng ở đâu đó; một tìm kiếm nhanh cho tôi xem JavaScript LL(1) Grammar. (Ngoài ra còn có một lược đồ BNF cho JavaScript tại RPA Toolkit: Parse JavaScript.)

Vì bạn chỉ hỏi về một trình phân tích cú pháp, tôi sẽ giả sử bạn đã có một lexer.

Biến ngữ pháp đó thành tệp Yacc thực sự không quá khủng khiếp. Ví dụ, có một C grammar for Yacc.

+1

Bạn đã thực sự * thực hiện * điều này chưa? Việc xây dựng trình phân tích cú pháp * đang hoạt động * khó hơn tìm kiếm một ngôn ngữ thực. Mọi người dường như nghĩ rằng nó rất dễ dàng để tát cùng một ngữ pháp và tắt bạn đi. Chúc may mắn với điều đó. (Có, tôi đã làm điều này, cho một số ngôn ngữ đầy đủ). –

0

Bạn có thực sự cần triển khai nó từ đầu không? Một số thư viện như Jint sẽ thực hiện cùng một công việc, nhanh hơn và an toàn hơn. Jint là một trình thông dịch javascript trong .NET - được sự chấp thuận của riêng tôi.

0

Tôi viết các trình phân tích cú pháp của mình với COCO/R cho C# http://ssw.jku.at/coco/ vì nó chỉ hoạt động mà không cần cấu hình. Tuy nhiên, nó không phải là nguồn cấp tương thích với Yacc, Flex, Bison, vv Tuy nhiên, cú pháp của nó là đơn giản. Hơn nữa COCO/R hỗ trợ một vài ngôn ngữ .NET khác với C#. ANTLR hoạt động cho C# có nhiều tính năng hơn nhưng cần nhiều thời gian hơn để đọc tài liệu và cài đặt công cụ.

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