parsing - ¿Qué hace especial a Ometa?
programming-languages grammar (2)
Es un metalenguaje, por lo que puedo decir. Puede crear construcciones de lenguaje nuevas y crear DSL; pero lo más convincente es que puede subclase de analizadores existentes para extender un idioma. Eso es lo que puedo recordar al respecto, de todos modos.
Me pareció interesante: http://www.moserware.com/2008/06/ometa-who-what-when-where-why.html
Ometa es "un nuevo lenguaje orientado a objetos para la coincidencia de patrones". Me he encontrado con la coincidencia de patrones en idiomas como las herramientas de Oz para analizar gramáticas como Lexx / Yacc o Pyparsing antes. A pesar de ver el código de ejemplo, leer las discusiones y hablar con un amigo, todavía no soy capaz de entender realmente qué hace especial a Ometa (o al menos, por qué algunas personas creen que es). ¿Alguna explicación?
Además, lo más importante para mí, el puerto Squeak de Ometa permite reglas recursivas a la izquierda.
De su herencia de PEG, se vuelve a rastrear y tiene una visión ilimitada. La memorización de resultados de análisis previos permite tiempos de análisis lineal (casi todo el tiempo (*)).
Las producciones de orden superior permiten refactorizar fácilmente una gramática.
Este documento - Packrat Parsers puede apoyar la recursividad izquierda - explica las propiedades recursivas a la izquierda.
(*) La sección 5 del documento explica que uno puede sufrir tiempos de parlamento superlineales, pero este problema no se manifiesta en gramáticas prácticas.