PHP Lexer和Parser Generator?

时间:2011-11-03 22:18:21

标签: php parsing lexical-analysis parser-generator

我知道问题Lex and Yacc in PHP之前被问过但是1年前。

现在有没有新的成熟PHP解析器生成器? 我的搜索将我带到了下面的那些,你对他们有什么看法,还有其他什么?

  • code.google.com/p/antlrphpruntime/:ANTLR PHP版本,但它似乎是非常测试版本,我认为还有很多工作要做。优点是我可以在ANTLR Works工具中编写语法。
  • pear.php.net/package/PHP_ParserGenerator/docs/0.1.7/:我试过但看起来很复杂,与PHP_LexerGenerator一起使用。
  • sourceforge.net/projects/lime-php/:我没试过
  • bitbucket.org/wez/lemon-php/downloads:我没试过
  • bitbucket.org/wez/jlexphp/downloads:我没试过

[答案:] 有人给了我一个古老问题的精彩链接: Is there an alternative for flex/bison that is usable on 8-bit embedded systems?

这篇文章让我了解了大部分生成的ANTLR代码。所以我的选择保持不变:ANTLR虽然项目似乎已经死了。我希望我不必改变代码,因为我希望保持它的可维护性。

我会等一下,看看是否有另一个答案,否则我会接受你的建议继续使用ANTLR

4 个答案:

答案 0 :(得分:6)

我建议尝试一下ANTLR。 ANTLRWorks可能会有所帮助。

我自己用纯PHP写了一个LL(1)解析器生成器,因为我不知道其他基于PHP的解决方案。

答案 1 :(得分:6)

我已将jison(javascript中的Bison克隆)移植到php。结果是一个杀手解析器,能够处理非常简单和非常复杂的lexing /解析。它现在是Jison的一部分,但my fork中有一些更新。

文件为here。请参阅该页面中的自述文件,您可以同时创建一个能够执行相同或不同操作的javascript和php解析器。

它使用稳定,快速,简单和有趣。

答案 2 :(得分:2)

答案 3 :(得分:0)

有最新的PHP 7.4语法文件:https://github.com/php/php-src/blob/af12aa8124232b8fb6e96736e1232f6e0d2554e8/Zend/zend_language_parser.y

PHP使用re2c解析器生成器,但是据我所知,其语法与ANTLR兼容。