如何为PHP选择合适的解析器生成器?

如何为PHP选择合适的解析器生成器?,php,regex,xslt,yacc,lex,Php,Regex,Xslt,Yacc,Lex,一些程序员说他们“厌倦了使用正则表达式来解析那些不应该用正则表达式解析的东西”(见下图)。其他人,比如我,更喜欢用PHP编程(和),避免使用另一个框架(如)。。。但不是“那么多”,这是第一个问题: 当我们必须避免创建(复杂的)PHP解析器,迁移到真正的“引擎”时 完成第一个问题的第二个问题是“解析复杂事物的最佳PHP工具包是什么?”?如今,2013年出现了标准的可互操作解析器内容、XML(或等)和“标准解析器”,如和 正如,也许没有“最佳解决方案”,但一个好的做法是选择一个解决方案,然后再选择另

一些程序员说他们“厌倦了使用正则表达式来解析那些不应该用正则表达式解析的东西”(见下图)。其他人,比如我,更喜欢用PHP编程(和),避免使用另一个框架(如)。。。但不是“那么多”,这是第一个问题:

当我们必须避免创建(复杂的)PHP解析器,迁移到真正的“引擎”时

完成第一个问题的第二个问题是“解析复杂事物的最佳PHP工具包是什么?”?如今,2013年出现了标准的可互操作解析器内容、XML(或等)和“标准解析器”,如和

正如,也许没有“最佳解决方案”,但一个好的做法是选择一个解决方案,然后再选择另一个

总结:1)“什么时候我们应该离开纯PHP或PHP+RegEx,使用解析器生成器?”;2) “PHP的最佳解析器生成器是什么,或者选择最佳解析器生成器的配方/上下文/条件是什么?”


(外接程序编辑版本)

我想读者会喜欢一般性的讨论,但是,作为一个指导,这里有一些范围

  • (回答@HugoDelsing)总的来说,我“不在乎它是如何工作的,但我想尽快得到结果”。在一些情况下,当我“想要完全控制一切”时,我需要优化

  • (回答@bizzehdee)近年来,我正在解析多种文本字符串:原始文本;参考文献/参考书目的原始文本和另一个阶梯文本,如;日期;电子邮件文本;单位和方程式(识别、规范化并最终转换)。在另一个时代,我开发了简单的命令行工具



好奇(这是我提出这个问题的动机):关于“PHP替代方案用于Lex/Yacc方法”的使用,每月都会出现,正面和负面的“有用投票”。。。也许这只是一个“恨与爱”行为的迹象,但从另一方面来说,这可能是一个好问题

那么,你在分析什么?您是否正在尝试自行解析PHP?或者你是想用PHP解析“某物”吗?介绍中的常见解释是基于混淆匹配和解析。不确定您的实际问题是否有一个通用的答案,因为没有适用于所有问题的通用工具。取决于要解析的输入行话或表示形式。当然,
unpack()
比lexer或regex更适合(请注意引号)“解析”二进制数据(但这并不意味着它不可行)。如果你想了解某些东西是如何工作的,并想完全控制你所做的一切:
自己动手吧
。如果你不在乎它是如何工作的,但想快速得到结果,就使用别人为你写的东西。Atlast>如果您的编码水平高于您的知识水平,那么很有可能其他人编写了更好/更高效的代码,使用itPHP可能是明智的,因为PHP没有一个像样的解析器生成器。我所说的“体面”是指积极维护/开发的,并且有体面的文档。请记录:问题已重新发布给程序员: