Boost Spirit Implementa una DSL pequeña de una línea en una aplicación de servidor

Disculpas si esta pregunta ha sido respondida antes.

Quiero insertar un DSL pequeño en una aplicación de servidor en la que trabajo. La sintaxis es muy simple e incluso en esta etapa temprana estoy perplejo. Simplemente no puedo entender cómo construir la sintaxis en espíritu.

Aquí hay un ejemplo de la sintaxis que quiero probar:

WHERE [not] <condition> [ and | or <condition> ] <command> [parameters]

La cláusula WHERE seleccionará una serie de objetos de una tienda interna mediante la prueba de las propiedades nombradas en ellos. El vector de los objetos seleccionados se pasa luego como entrada al objeto de comando.

Hay 2 pruebas posibles que quiero realizar en cada objeto:

<property> = "value"

y

<property> like <regexp>

Hay 2 comandos también:

print <propertyName> [, <propertyName> [...]]

y

set <propertyName> = "value" [, <propertyName> = "value" [...] ]

Así que los ejemplos de la sintaxis serían:

where currency like "GBP|USD" set logging = 1, logfile = "myfile"

y

where not status = "ok" print ident, errorMessage

Sé que esta es una gran pregunta, pero me pregunto si hay algún experto en espíritus que pueda eliminar esta sintaxis en unos pocos segundos. Llegué a analizar LIKE y =, pero me quedé atascado al intentar mezclar eso con AND, OR y NOT. El problema para mí es no saber por dónde empezar cuando pienso en cómo el espíritu abordará esto.

Respuestas a la pregunta(1)

Su respuesta a la pregunta