2011-11-03 40 views
13

Tôi biết câu hỏi Lex and Yacc in PHP đã được hỏi trước nhưng cách đây 1 năm.Máy phát PHP và trình phân tích cú pháp PHP?

Hiện có trình tạo trình phân tích cú pháp PHP trưởng thành mới nào không? Tìm kiếm của tôi đã đưa tôi đến những điều sau đây, bạn nghĩ gì về họ, bạn nghĩ gì về họ?

  • code.google.com/p/antlrphpruntime/: Phiên bản PHP ANTLR nhưng có vẻ như là phiên bản beta và tôi nghĩ có rất nhiều việc phải làm. Ưu điểm là tôi có thể viết ngữ pháp trong công cụ ANTLR Works.
  • pear.php.net/package/PHP_ParserGenerator/docs/0.1.7/: Tôi đã thử nhưng có vẻ rất phức tạp, được sử dụng với PHP_LexerGenerator.
  • sourceforge.net/projects/lime-php/: Tôi không cố gắng
  • bitbucket.org/wez/lemon-php/downloads: Tôi không cố gắng
  • bitbucket.org/wez/jlexphp/ tải: tôi không cố gắng

[trả lời:] Ai đó đã cho tôi liên kết tuyệt vời này để một câu hỏi cũ: Is there an alternative for flex/bison that is usable on 8-bit embedded systems?

bài viết này cho phép tôi hiểu hầu hết các mã ANTLR tạo ra. Vì vậy, sự lựa chọn của tôi vẫn giữ nguyên: ANTLR mặc dù dự án dường như đã chết. Tôi hy vọng tôi sẽ không phải thay đổi mã như tôi muốn giữ cho nó có thể duy trì được.

tôi sẽ chờ đợi một chút để xem nếu có một câu trả lời nếu không tôi sẽ chấp nhận lời khuyên của bạn để tiếp tục sử dụng ANTLR

+0

Nếu bạn có ngữ pháp được phân bổ cho PHP, hãy thử CoCo/R (ssw.jku.at/coco/). Tôi đang sử dụng nó ngay bây giờ cho một dự án tại nơi làm việc và nó hoạt động khá tốt. – xbonez

+0

Tôi sẽ không sử dụng code.google.com/p/antlrphpruntime: nó (AFAIK) không chủ động được phát triển, và nó chỉ hỗ trợ tối thiểu những gì mà hầu hết các mục tiêu ANTLR hỗ trợ khác. Đó là lý do tại sao nó không được bao gồm theo mặc định trong công cụ ANTLR. Cũng vậy với PHP_ParserGenerator: Tôi sẽ không đi cho nó (không nhiều tài liệu, và đó là một dự án bị bỏ rơi). 3 công cụ khác không quen thuộc với tôi: Tôi khuyên bạn nên thử. –

+0

@xbonez: Tôi không chắc chắn 100% nhưng tôi không nghĩ rằng bạn hiểu nhu cầu của tôi. Tôi cần phải tạo một trình phân tích cú pháp được viết bằng PHP để phân tích một ngữ pháp cụ thể (không phân tích cú pháp ngôn ngữ php). CoCo/R có vẻ đẹp nhưng tôi không thể tìm thấy một máy phát php. –

Trả lời

6

tôi muốn đề xuất để cung cấp cho ANTLR một thử. ANTLRWorks có thể hữu ích.

Tôi đã viết một trình tạo phân tích cú pháp LL (1) bản thân mình trong PHP thuần túy, vì tôi không biết các giải pháp dựa trên PHP khác.

+0

Tôi đang thử ANTLR vào lúc này nhưng có rất nhiều lỗi trong mã được tạo. Ví dụ: một số ngoại lệ bị thiếu và trình phân tích cú pháp tăng các ngoại lệ không mong muốn. Bạn đã sử dụng thành phần đó chưa? http://code.google.com/p/antlrphpruntime/ –

+0

Hm, thực ra là không. Tôi đã thử thời gian chạy ActionScript gần đây - hiện đang bị hỏng. Nhưng tôi nhớ, rằng tôi đã kiểm tra chơi với ANTLR và thời gian chạy PHP. Vào thời điểm đó, mọi thứ dường như hoạt động. – SteAp

+0

url bị hỏng –

2
+0

Cảm ơn bạn. Mặc dù bây giờ tôi khá hài lòng với ANTLR tạo ra Parser, tôi vẫn quan tâm đến những người khác vì antlr trông rất chậm. Bạn đã thử PEG, nó có biểu diễn hay không. –

+0

Nhân tiện, tôi nghĩ dự án PEG gần DEAD .... Lần commit cuối cùng 03/2011, 10 lỗi được khai báo vào tháng 8 năm 2011. –

+0

Tôi không biết về hiệu suất, nhưng tôi thích PEG và đây là, tôi nghĩ, việc thực hiện PEG chỉ trong php. – jcubic

6

Tôi đã chuyển Jison, một bản sao Bison trong javascript, để php. Kết quả là một trình phân tích cú pháp kẻ giết người, có thể xử lý việc phân tích cú pháp/phân tích cú pháp rất đơn giản và rất phức tạp. Nó bây giờ là một phần của Jison, nhưng có một vài cập nhật trong my fork.

Các tệp là here. Xem readme trong trang đó, bạn tạo một trình phân tích cú pháp javascript và php cùng một lúc có khả năng làm những việc giống nhau hoặc khác nhau.

Tính năng này ổn định, nhanh chóng, dễ sử dụng và thú vị.

+0

Tôi sẽ kiểm tra điều đó càng sớm càng tốt, nó sẽ rất tuyệt. –

+0

liên kết chết trên PHP được chuyển: / – Dennis

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