Boost Spirit Внедрение небольшого однострочного DSL в серверном приложении
Извиняюсь, если на этот вопрос уже был дан ответ.
Я хочу вставить небольшой DSL в серверное приложение, над которым я работаю. Синтаксис очень прост, и даже на этом раннем этапе я в тупике. Я просто не могу понять, как построить синтаксис по духу.
Вот пример синтаксиса, который я хочу проверить:
WHERE [not] <condition> [ and | or <condition> ] <command> [parameters]
Предложение WHERE выберет несколько объектов из внутреннего хранилища, протестировав на них именованные свойства. Вектор выбранных объектов затем передается в качестве ввода в объект команды.
Есть 2 возможных теста, которые я хочу выполнить на каждом объекте:
<property> = "value"
а также
<property> like <regexp>
Также есть 2 команды:
print <propertyName> [, <propertyName> [...]]
а также
set <propertyName> = "value" [, <propertyName> = "value" [...] ]
поэтому примеры синтаксиса были бы:
where currency like "GBP|USD" set logging = 1, logfile = "myfile"
а также
where not status = "ok" print ident, errorMessage
Я знаю, что это большой вопрос, но мне интересно, есть ли какие-нибудь эксперты по духу, которые могут выбить этот синтаксис за несколько секунд? Я дошел до анализа LIKE и =, но застрял при попытке смешать это с AND, OR и NOT. Для меня проблема в том, что я не знаю, с чего начать, думая о том, как дух справится с этим.