2010-06-15 19 views
6

Tôi đã sử dụng antlr và javacc/freecc trong một thời gian. Bây giờ tôi cần phải viết một loạt các trình phân tích cú pháp bằng cách sử dụng các ngữ pháp antlr nhưng các trình phân tích cú pháp như vậy cần phải được viết bằng ngôn ngữ ruby.Đâu là đối tác tốt nhất để ANTLR tạo các trình phân tích cú pháp bằng ruby?

Tôi googled nhưng không tìm thấy gì. Có bất kỳ trình tạo phân tích cú pháp ruby ​​nào có các ngữ pháp antlr và tạo một trình phân tích cú pháp không? Nếu có nhiều, cái nào là tốt nhất theo ý kiến ​​của bạn?

TIA Paolo

Trả lời

1

Bạn cũng có thể tạo trình phân tích cú pháp bằng ANTLR cho Java hoặc C và gọi nó từ chương trình Ruby của bạn với JRuby hoặc FFI.

Điều này cũng sẽ cung cấp cho bạn hiệu suất tăng có thể là lợi thế lớn nếu bạn có nhiều đầu vào để phân tích cú pháp.

+0

ahe, đó là chính xác những gì tôi chọn để làm. Tôi đã khởi chạy một dự án mới (http://github.com/thesp0nge/mirage) liên quan đến tất cả mọi thứ về phân tích cú pháp mã nguồn. Tôi sẽ viết ảo ảnh trong C bằng cách sử dụng antlr và sau đó tôi sẽ gọi nó từ Ruby. Đối với bất kỳ ai quan tâm, điều này là để viết lại chính cho dự án Owasp Orizon, một bộ phân tích mã nguồn tĩnh tôi đang viết (http://github.com/thesp0nge/owasp-orizon/) –

3

Tại sao không sử dụng ANTLR Ruby: http://www.antlr.org/wiki/display/ANTLR3/Antlr3RubyTarget (http://split-s.blogspot.com/2005/12/antlr-for-ruby.html)

Ngoài ra còn có một số phiên bản beta ở đây: http://rubyforge.org/projects/antlr3/

+1

Xấu hổ với tôi. Tôi đã không kiểm tra nơi thích hợp đầu tiên ... cộng đồng đá quý. Cảm ơn bạn rất nhiều :-) –

+1

Lưu ý rằng mục tiêu Ruby được vận chuyển với ANTLR 3.4 khá bị hỏng. Nếu có bất kỳ vấn đề với đá quý, sửa đổi đầu của dự án trên GitHub xuất hiện để làm việc ok: https://github.com/ohboyohboyohboy/antlr3 –

7
  1. Bạn có thể nhận ra dễ dàng bằng cách sử dụng JRuby và giữ các trình phân tích cú pháp ANTLR của bạn trong java.
  2. Nếu PEGs đủ cho công việc của bạn, treetop và mới hơn citrus là các công cụ phổ biến được sử dụng bởi người ruby.
  3. Trình phân tích cú pháp khác mà tôi đã đào tạo khi nghiên cứu dự án là: peggy, Kanocc, Racc.

Đối với dự án của tôi, tôi đã chọn ngọn cây (cam quýt chưa được sinh ra).

+0

Cảm ơn bạn rất nhiều cho các đề xuất của bạn :-) –

+2

Đứa trẻ mới mẻ là [Parslet] (http://kschiess.github.com/parslet/index.html) – clyfe