Me he estado preguntando durante mucho tiempo por qué no parece haber ningún analizador para, por ejemplo, BNF, que se comporte como expresiones regulares en varias bibliotecas.¿Por qué los analizadores en línea parecen detenerse en las expresiones regulares?
Claro, hay cosas como ANTLR, Yacc y muchos otros que generar código el cual, a su vez, puede analizar una CFG, pero no parece ser una biblioteca que puede hacerlo sin el paso intermedio.
Estoy interesado en escribir un Packrat parser, para arrancar todos los paréntesis anidados-caprichos asociados con expresiones regulares (y, tal vez más aún, por el deporte de hacerlo), pero de alguna manera tengo la sensación de que soy simplemente caminando hacia otro problema de detención, como una clase de pantanos.
¿Existe una limitación técnica/teórica para estos analizadores, o simplemente me falta algo?
Parece que está discutiendo la implementación (aunque no especificada), que la capacidad de analizar un CFG en sí mismo. Claro, las expresiones regulares son crípticas para el ojo inexperto. Tal vez, un lenguaje libre de contexto podría ser aún más críptico. Pero ese no era el punto. El punto era, ¿por qué hay solo generadores de código, y no cosas que puedo poner en una función/objeto y obtener bloques de texto combinados, como hago con las expresiones regulares de hoy? –
Normalmente, cuando las personas usan un analizador, buscan hacer mucho más que mirar un texto y ver si coincide con su gramática o no. No es que haya nada de malo en eso, pero la mayoría de los analizadores hacen bastante más. –
Además, la implementación es una limitación técnica con la que tendrá que lidiar en algún momento, y usted preguntó acerca de las limitaciones técnicas/teóricas. –