2011-09-15 12 views
7

Me gustaría saber: ¿hay algo así como pyparsing (un analizador de bajadas recursivo) para PHP?
Ya lo busqué, pero parece que nadie lo hizo todavía. Espero estar equivocadoBiblioteca como pyparsing para PHP

Gracias de antemano.

+0

¿Qué desea analizar? – NikiC

+0

Expresiones anidadas personalizadas con diferentes caracteres adjuntos. No es algo simple con Regex :-( – Donovan

+0

@stereofrog: ese proyecto parece estar muerto, pero voy a echar un vistazo. Gracias. – Donovan

Respuesta

5

no sé ningún generadores de analizadores sintácticos mantenidos por escrito en PHP. Pero hay generadores de analizadores escritos en otros idiomas con PHP como idioma de destino. Uno que he usado personalmente es kmyacc. Hay un PHP and Windows compatible fork de él. La gramática porque está escrito en formato yacc y puede ser compilado para PHP usando este comando:

kmyacc -l -m %PARSER_PROTOTYPE_FILE% -p %NAME% %GRAMMAR_FILE% 

Kmyacc ya viene con un archivo de prototipo de analizador de procedimientos para PHP, pero yo personalmente uso a modified version de un OOP based prototype.

Como ejemplo: This grammar get compilado en this parser. (Tenga en cuenta que la gramática es enorme, por eso el analizador generado tiene dos mil quinientas líneas. Una gramática "normal" obviamente sería mucho más pequeña).

+0

Thi es muy interesante. Voy a echarle un vistazo. Muchas gracias (obviamente, si eso es lo que necesito, lo comprobaré como respondí). – Donovan

+0

+1: Marcado como favorito – hakre

2

Si todo lo que necesita analizar son "expresiones personalizadas", Probablemente pueda codificar un analizador de descenso recursivo manualmente con bastante facilidad, si ya ha escrito su gramática.

Ver esta respuesta, así para más detalles: Is there an alternative for flex/bison that is usable on 8-bit embedded systems?

+0

Jeje, siempre chocando contigo al analizar preguntas :) – NikiC

+0

@NikiC: Mal efecto secundario de hacer eso para vivir 40 años: -} –