Recientemente escribí un analizador en Python usando Ply (es una reimplementación de python de yacc). Cuando ya casi había terminado con el analizador, descubrí que la gramática que necesito analizar requiere que realice una búsqueda durante el análisis para informar al lector. Sin mirar para informar al lector, no puedo analizar correctamente las cadenas en el idioma.Implementación de Python de Parsec?
Dado que puedo controlar el estado del lector de las reglas de la gramática, creo que resolveré mi caso de uso usando una tabla de búsqueda en el módulo analizador, pero puede ser muy difícil de mantener/probar. Entonces quiero saber sobre algunas de las otras opciones.
En Haskell usaría Parsec, una biblioteca de funciones de análisis (conocidas como combinadores). ¿Hay una implementación Python de Parsec? ¿O tal vez alguna otra biblioteca de calidad de producción llena de funcionalidad de análisis para poder construir un analizador sensible al contexto en Python?
EDITAR: Todos mis intentos de análisis sin contexto han fallado. Por esta razón, no espero que ANTLR sea útil aquí.
En mi caso necesito más de lo que el análisis tradicional lo permite. Todos mis intentos de escribir un analizador sintáctico de contexto tradicional han caído en su cara por razones teóricas. Estoy bastante seguro en este punto de que necesito un lexing condicional como mínimo. ¿ANTLR todavía se aplicaría? –
Tiene * anticipación con ANTLR y, si lo necesita, puede agregar sintaxis y predicados a su gramática (también existen predicados semánticos). use antlrwork, es realmente útil para diseñar/depurar gramática (http://www.antlr.org/works/index.html). También hay gramáticas preparadas en el sitio ANTLR. –