PHP 中的 Lex 和 Yacc [已关闭]
2022-08-30 14:59:10
PHP中是否有Lex和Yacc的实现?
如果没有,任何人都可以建议一个词法分析器和解析器生成器(即,像Lex和Yacc这样的任何东西)来创建PHP代码。我不太担心生成的解析器的性能。
我厌倦了使用正则表达式来解析那些真的不应该用正则表达式解析的东西......
PHP中是否有Lex和Yacc的实现?
如果没有,任何人都可以建议一个词法分析器和解析器生成器(即,像Lex和Yacc这样的任何东西)来创建PHP代码。我不太担心生成的解析器的性能。
我厌倦了使用正则表达式来解析那些真的不应该用正则表达式解析的东西......
有JLexPHP:https://github.com/wez/JLexPHP/blob/master/jlex.php
我没有用过它,但是有这个: http://pear.php.net/package/PHP_ParserGenerator ,它从柠檬语法创建一个PHP解析器。不过,该项目似乎处于非活动状态。
我还发现了这个项目:http://code.google.com/p/antlrphpruntime/,它使用Antlr。不过,这又是不活跃的。
已经找了一段时间这种东西。找到这篇文章后,我尝试了ANTLR PHP运行时。我可以报告,它远未完成。生成的代码中存在几个错误,其中原始的java运行时类尚未正确转换为PHP(嵌套类声明,在尝试访问类方法运算符时使用“.”而不是“.”)。
ANTLR框架本身非常强大(不能证明生成的代码的效率)。特别是图形工具ANTLRWorks使创建和调试语法变得容易。关于PHP版本太糟糕了。不过,您可以自己滚动。最好的解决方案可能是分析生成的ANTLR运行时类,弄清楚它是如何工作的,并提出一个轻量级的小型企业版本。