Вопрос

Я ищу способ получить 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 ?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top