Да. Это так. Я хочу иметь возможность вставить выражение типа:
"a && b || c"
непосредственно в исходный код в виде строки:
const std::string expression_text("a && b || c");
Создайте с ним лениво оцененную структуру:
Expr expr(magical_function(expression_text));
а затем оценить подстановку известных значений:
evaluate(expr, a, b, c);
Я хотел бы расширить этот маленький DSL позже, поэтому немного сложнее с использованием некоторого синтаксиса, отличного от С++, поэтому я не могу просто жестко выделить мое выражение простым способом. Вариант использования заключается в том, что я смогу копировать и вставлять одну и ту же логику из другого модуля, используемого в другой области разработки для другого языка, а не при необходимости адаптировать его каждый раз, чтобы следовать синтаксису С++.
Если кто-то может заставить меня начать, по крайней мере, как сделать вышеприведенную простую концепцию 1 выражения и 2 булевых оператора, которые будут действительно оценены.
Примечание. Я разместил этот вопрос из-за обратной связи с другим вопросом, который я разместил: Как разобрать вход DSL для высокопроизводительного шаблона выражения. Здесь я действительно хотел получить ответ на несколько другую проблему, но комментарии спровоцировали этот конкретный вопрос, который, как мне казалось, стоит опубликовать, поскольку потенциальные ответы действительно заслуживают документального подтверждения.