2008-09-19 25 views
23

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?¿Qué hace que Ometa sea especial?

Respuesta

8

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.

He encontrado que esto es interesante: http://www.moserware.com/2008/06/ometa-who-what-when-where-why.html

+1

subclases no es la única forma en que puede combinar las gramáticas, Ometa también proporciona un mecanismo de invocación dominio extranjero. Esto es útil cuando quiere "derivar" de más de una clase. –

11

Además, lo más importante para mí, el puerto de Squeak Ometa permite reglas izquierda recursiva.

Desde su patrimonio PEG se pone marcha atrás y la búsqueda hacia delante ilimitada. La memorización de resultados de análisis previos permite tiempos de análisis lineal (casi todo el tiempo (*)).

producciones de orden superior permiten que uno refactorizar fácilmente una gramática.

This paper - Los analizadores de Packrat pueden admitir la recursividad izquierda: explica las propiedades recursivas a la izquierda.

(*) La sección 5 del documento explica que se pueden sufrir tiempos de parlamento superlineales, pero este problema no se manifiesta en gramáticas prácticas.

+0

¿Presumiblemente no puede haber dejado los recursivos y los tiempos de parse lineales? –

+0

Sí, puede hacerlo, debido a la memorización. bueno, la mayoría del tiempo. La Sección 5 del documento explica más. –

+0

+1 para las producciones de orden alto :) – elias

Cuestiones relacionadas