Flex / Bison-подобная функциональность в PHP - PullRequest
11 голосов
/ 17 июня 2009

Я ищу способ получить поддержку Flex / Bison (или Lex / Yacc и др.) В PHP.В частности, я реализую логический анализатор запросов в веб-интерфейсе и предпочел бы хранить все операции внутри PHP (в отличие от вызова синтаксического анализатора C или передачи чего-либо в Python и т. Д.).

Ответы [ 3 ]

11 голосов
/ 17 июня 2009

LIME Генератор парсера для PHP:

Полный генератор синтаксических анализаторов LALR (1) и двигатель (как BISON или YACC), но это все сделано в PHP, и грамматика ввода проще и удобнее в обслуживании. Написать ваши действия в PHP. Генерировать PHP выходной код. Управляйте своим парсером с PHP. Хотите сделать язык?


Обновление:

Поскольку я написал выше, я вижу, что есть несколько других инструментов для генерации парсера, объявленных здесь:

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

Не уверен, что они лучше поддерживаются в 2014 году, но я знаю, Вез Ферлонг, он был первым разработчиком PDO и он очень хороший разработчик.

2 голосов
/ 02 июля 2010

Библиотека PEAR имеет классы LexerGenerator и ParserGenerator . Синтаксис LexerGenerator совместим с re2c , синтаксис ParserGenerator совместим с генератором Lemon Parser .

0 голосов
/ 26 мая 2012

Вы пробовали смотреть на PEG-парсеры в PHP: https://github.com/maetl/php-peg?

Или подход комбинатора парсера: http://qntm.org/locoparser?

...