我正在寻找一种在 PHP 中获得 Flex/Bison(或 Lex/Yacc 等)支持的方法。具体来说,我在 Web UI 中实现了一个布尔查询解析器,并且宁愿将所有操作保留在 PHP 中(而不是调用 C 解析器,或者将事情传递给 Python 等)。
问问题
6127 次
3 回答
12
PHP 的LIME解析器生成器:
完整的 LALR(1) 解析器生成器和引擎(如 BISON 或 YACC),但都是在 PHP 中完成的,并且输入语法更容易且更易于维护。用 PHP 编写您的操作。生成 PHP 输出代码。用 PHP 驱动你的解析器。想做语言?
更新:
由于我写了上面的内容,我看到还有一些其他的解析器生成工具,在这里宣布:
http://wezfurlong.org/blog/2006/nov/parser-and-lexer-generators-for-php/
不确定这些在 2014 年现在是否得到更好的维护,但我知道 Wez Furlong,他是 PDO 的原始开发人员,他是一个非常优秀的开发人员。
于 2009-06-16T21:09:29.690 回答
3
PEAR 库具有LexerGenerator和ParserGenerator类。LexerGenerator 语法与re2c兼容,ParserGenerator 语法与Lemon Parser 生成器兼容。
于 2010-07-02T15:43:44.867 回答
0
您是否尝试过查看 PHP 中的 PEG 解析器生成器:https ://github.com/maetl/php-peg ?
还是解析器组合器方法:http: //qntm.org/locoparser?
于 2012-05-26T11:48:24.467 回答