Вопрос по bison, flex-lexer – Flex / Bison-подобная функциональность в PHP

11

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

Ваш Ответ

3   ответа
11

ЛАЙМ Parser Generator для 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?


Обновить:

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

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

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

Вы когда-нибудь использовали это? Он не обновлялся в течение почти двух лет, и в нем нет зарегистрированных ошибок, открытых или закрытых, поэтому я не решаюсь верить, что он когда-либо был протестирован или действительно использован.
Кажется, кто-то пытается обновить его:github.com/rvanvelzen/lime (не тронут за 2 года, но это начало!)
Нет, мне никогда не требовалось реализовывать полноценный парсер в PHP. Тот факт, что это заброшенное программное обеспечение и никакой другой инструмент не существует, может указывать на то, что PHP не является подходящим инструментом для анализа заданий.
2

Библиотека PEAR имеет классыLexerGenerator а такжеParserGenerator, Синтаксис LexerGenerator совместим сre2c, Синтаксис ParserGenerator совместим сГенератор парсера лимона.

0

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

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

Похожие вопросы