我正在寻找一种在PHP中获得Flex / Bison(或Lex / Yacc等人)支持的方法。具体来说,我正在Web UI中实现一个布尔查询解析器,而宁愿将所有操作保留在PHP中(而不是调用C解析器,或者将内容传递给Python等)。

有帮助吗?

解决方案

LIME PHP解析器生成器:

  

完成LALR(1)解析器生成器和   引擎(比如BISON或YACC)但它是   全部用PHP完成,输入语法   更容易,更易于维护。写   你在PHP中的行为。生成PHP   输出代码。驱动你的解析器   PHP。想做一种语言吗?


更新

自从我上面写了以后,我看到有一些其他的解析器生成工具,在这里宣布:

http://wezfurlong.org/博客/ 2006 /月/语法分析器和 - 词法分析器发电机换PHP /

不确定这些在2014年是否有更好的维护,但我知道Wez Furlong,他是PDO的原始开发人员,他是一位非常优秀的开发人员。

其他提示

PEAR库有 LexerGenerator ParserGenerator 。 LexerGenerator语法与 re2c 兼容,ParserGenerator语法与 Lemon Parser generator

您是否尝试过在PHP中查看PEG解析器生成器: https://github.com/maetl/php -peg

或解析器组合方法: http://qntm.org/locoparser

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top