Функциональность, подобная Flex / Bison, в PHP
-
05-07-2019 - |
Вопрос
Я ищу способ получить Flex / Bison (или Lex / Yacc и др.al.) поддержка в PHP.В частности, я реализую анализатор логических запросов в веб-интерфейсе и предпочел бы сохранить все операции внутри PHP (в отличие от вызова анализатора C или передачи данных в Python и т.д.).
Решение
ИЗВЕСТЬ Генератор синтаксических анализаторов для PHP:
Завершите генератор синтаксического анализа LALR (1) и движок (например, BISON или YACC), но это все сделано на PHP, а грамматика ввода проще и более удобна в обслуживании.Напишите свои действия на PHP.Сгенерировать PHP выходной код.Управляйте своим парсером с помощью PHP.Хочешь создать язык?
Обновить:
Поскольку я написал выше, я вижу, что есть некоторые другие инструменты для генерации синтаксического анализа, анонсированные здесь:
http://wezfurlong.org/blog/2006/nov/parser-and-lexer-generators-for-php/
Не уверен, что сейчас, в 2014 году, они поддерживаются лучше, но я знаю Веза Ферлонга, он был первоначальным разработчиком PDO, и он очень хороший разработчик.
Другие советы
Библиотека PEAR имеет классы LexerGenerator и ParserGenerator . Синтаксис LexerGenerator совместим с re2c , синтаксис ParserGenerator совместим с Генератор анализатора лимона .
Вы пытались посмотреть на генераторы парсера PEG в PHP: https://github.com/maetl/php -peg ?
Или подход с использованием комбинатора синтаксического анализа: http://qntm.org/locoparser ?