PHP Lexer and Parser Generator? [closed]

跟風遠走 提交于 2019-11-27 01:23:50

问题


I know question Lex and Yacc in PHP was asked before but 1 year ago.

Is there any new mature PHP parser generator now? My searches drove me to the following ones, what do you think about them, any others?

  • code.google.com/p/antlrphpruntime/ : The ANTLR PHP version but it seems to be very beta version and I think there is a lot of work to do. The advantage is that I can write the grammar in the ANTLR Works tool.
  • pear.php.net/package/PHP_ParserGenerator/docs/0.1.7/ : I tried but it seems very complicated, to be used with the PHP_LexerGenerator.
  • sourceforge.net/projects/lime-php/ : I didn't try
  • bitbucket.org/wez/lemon-php/downloads : I didn't try
  • bitbucket.org/wez/jlexphp/downloads : I didn't try

[Answer :] Somebody gave me this wonderful link to an old question : Is there an alternative for flex/bison that is usable on 8-bit embedded systems?

This posts allowed me to understand most of the ANTLR code generated. So my choice keeps being the same : ANTLR although the project seems dead. I hope I wont have to alter the code as I would like to keep it maintainable.

I will wait a bit to see if there is another answer otherwise I'll accept your advise to keep using ANTLR


回答1:


I'd propose to give ANTLR a try. ANTLRWorks might be helpful.

I wrote an LL(1) parser generator myself in pure PHP, since I wasn't aware of other PHP-based solutions.




回答2:


I've ported Jison, a Bison clone in javascript, to php. The results are a killer parser, able to handle very simple and very complex lexing/parsing. It is now part of Jison, but there are a few updates in my fork.

The files are here. See the readme in that page, you create a javascript and php parser at the same time that are capable of doing the same or different things.

It is stable, fast, easy and fun to use.




回答3:


There is PEG for php https://github.com/hafriedlander/php-peg




回答4:


There's latest grammar file for PHP 7.4: https://github.com/php/php-src/blob/af12aa8124232b8fb6e96736e1232f6e0d2554e8/Zend/zend_language_parser.y

PHP using re2c parser generator, but as I know its syntax compatible with ANTLR.



来源:https://stackoverflow.com/questions/8002617/php-lexer-and-parser-generator

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!