Question

I'm looking for a way to get Flex/Bison (or Lex/Yacc, et. al.) support in PHP. Specifically, I'm implementing a boolean query parser in a web UI and would rather keep all operations inside of PHP (as opposed to calling a C parser, or passing things off to Python, etc.).

Was it helpful?

Solution

LIME Parser Generator for PHP:

Complete LALR(1) parser generator and engine (like BISON or YACC) but it's all done in PHP, and the input grammar is easier and more maintainable. Write your actions in PHP. Generate PHP output code. Drive your parser with PHP. Wanna make a language?


update:

Since I wrote the above, I see that there are some other tools for parser generation, announced here:

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

Not sure if these are any better maintained now in 2014, but I know Wez Furlong, he was the original developer of PDO, and he is a very good developer.

OTHER TIPS

The PEAR library has the classes LexerGenerator and ParserGenerator. The LexerGenerator syntax is compatible with re2c, ParserGenerator syntax is compatible with the Lemon Parser generator.

Have you tried looking at PEG parser generators in PHP: https://github.com/maetl/php-peg ?

Or a parser combinator approach: http://qntm.org/locoparser ?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top