我不知道用PHP编写的任何维护的解析器生成器.但是有一些解析器生成器用其他语言编写,用PHP作为目标语言.我个人使用的是kmyacc.它有一个PHP和Windows兼容的分支.它的语法以yacc格式编写,可以使用以下命令编译为PHP:
kmyacc -l -m %PARSER_PROTOTYPE_FILE% -p %NAME% %GRAMMAR_FILE%
Run Code Online (Sandbox Code Playgroud)
Kmyacc已经自带了一个程序分析器原型文件PHP,但我个人使用修改版本的的OOP基于原型.
作为一个例子:这个语法 get被编译到这个解析器中.(请注意,语法很大,这就是生成的解析器有两千五百行的原因."正常"语法显然要小得多.)