问题 PHP中的Flex / Bison类功能


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


1608
2018-06-16 21:03


起源



答案:


青柠 适用于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的原始开发人员,他是一个非常好的开发人员。


11
2018-06-16 21:09



你有没有用过这个?它已经近两年没有更新了,并且它没有提出错误,无论是开放还是关闭,所以我不相信它已经过测试或真正使用过。 - Wang
不,我从来不需要在PHP中实现一个完整的解析器。事实上它是放弃软件,而不存在其他工具,这可能是PHP不是解析作业的正确工具的线索。 - Bill Karwin
似乎有人试图更新它: github.com/rvanvelzen/lime (2年来没有被触及,但这是一个开始!) - Andrea


答案:


青柠 适用于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的原始开发人员,他是一个非常好的开发人员。


11
2018-06-16 21:09



你有没有用过这个?它已经近两年没有更新了,并且它没有提出错误,无论是开放还是关闭,所以我不相信它已经过测试或真正使用过。 - Wang
不,我从来不需要在PHP中实现一个完整的解析器。事实上它是放弃软件,而不存在其他工具,这可能是PHP不是解析作业的正确工具的线索。 - Bill Karwin
似乎有人试图更新它: github.com/rvanvelzen/lime (2年来没有被触及,但这是一个开始!) - Andrea


PEAR库有类 LexerGenerator 和 ParserGenerator。 LexerGenerator语法兼容 re2c,ParserGenerator语法兼容 柠檬解析器发电机


2
2017-07-02 15:43





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

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


0
2018-05-26 11:48