题
我正在寻找一种在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 ?
不隶属于 StackOverflow