PHP中的Flex / Bison类功能

时间:2009-06-16 21:03:20

标签: bison flex-lexer

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

3 个答案:

答案 0 :(得分:11)

LIME PHP的分析器生成器:

  

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


更新

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

http://wezfurlong.org/blog/2006/nov/parser-and-lexer-generators-for-php/

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

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