Boost Spirit Wdrażaj małą linię DSL w jednej aplikacji serwerowej

Przepraszam, jeśli na to pytanie udzielono wcześniej odpowiedzi.

Chcę wstawić małą DSL do aplikacji serwerowej, nad którą pracuję. Składnia jest bardzo prosta i nawet na tym wczesnym etapie jestem zakłopotany. Po prostu nie potrafię zrozumieć, jak konstruować składnię w duchu.

Oto przykład składni, którą chcę przetestować:

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

Klauzula WHERE wybierze pewną liczbę obiektów ze sklepu wewnętrznego, testując na nich nazwane właściwości. Wektor wybranych obiektów jest następnie przekazywany jako dane wejściowe do obiektu polecenia.

Istnieją 2 możliwe testy, które chcę wykonać na każdym obiekcie:

<property> = "value"

i

<property> like <regexp>

Istnieją również 2 polecenia:

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

i

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

przykładami składni byłyby:

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

i

where not status = "ok" print ident, errorMessage

Wiem, że to wielkie pytanie, ale zastanawiam się, czy są tam eksperci duchowi, którzy potrafią znokautować tę składnię w ciągu kilku sekund. Doszedłem do parsowania LIKE i =, ale utknąłem przy próbie zmieszania tego z AND, OR i NOT. Problem polega na tym, że nie wiem, od czego zacząć, zastanawiając się, w jaki sposób duch się tym zajmie.

questionAnswers(1)

yourAnswerToTheQuestion