12

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

4

3 回答 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 库具有LexerGeneratorParserGenerator类。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 回答