Flex / Vega-como funcionalidade dentro do PHP
-
05-07-2019 - |
Pergunta
Eu estou procurando uma maneira de obter Flex / Bison (ou Lex / Yacc, et. Al.) Suporte no PHP. Especificamente, eu estou implementando um analisador de consulta booleana em uma interface Web e prefere manter todas as operações dentro de PHP (em oposição ao chamar um analisador C, ou passar as coisas fora para Python, etc.).
Solução
LIME Parser Generator para PHP:
LALR Completo (1) gerador de analisador e motor (como BISON ou YACC), mas é tudo feito em PHP, e a gramática de entrada é mais fácil e mais sustentável. Escrever suas ações em PHP. gerar PHP código de saída. Conduzir o seu analisador com PHP. Quero fazer uma língua?
atualização:
Desde que eu escrevi acima, eu ver que existem algumas outras ferramentas para a geração de parser, anunciou aqui:
http://wezfurlong.org/ Blog / 2006 / nov / analisador-e-lexer-geradores-de-php /
Não tenho certeza se estes são melhor mantido agora em 2014, mas eu sei Wez Furlong, ele foi o desenvolvedor original do DOP, e ele é um bom desenvolvedor.
Outras dicas
A biblioteca PEAR tem as classes LexerGenerator e ParserGenerator . A sintaxe LexerGenerator é compatível com re2c , sintaxe ParserGenerator é compatível com o Lemon Analisador gerador .
Você já tentou olhar para geradores de analisador de PEG em PHP: https://github.com/maetl/php PEG ?
Ou uma abordagem combinator analisador: http://qntm.org/locoparser