Декларативный язык для описания взаимоотношений параметров системы
Если описывать очень просто, то есть сервер и есть клиент. Клиент работает с параметрами сервера и может их читать\изменять. Сервер же отображает в параметрах состояние агентов, с которыми он работает. Агенты могут меняться во время работы. Простые ограничения уже поддерживаются (например, параметр А не может быть больше 100 или параметр Б может быть в трёх состояниях: 1, 2 и 3). Но есть более сложные ограничения, когда один параметр зависит от другого. Например, Если параметр А=3, то параметр Б не может быть равен 10 или Параметр А конфигурирует также параметр Б.
И вот хотелось бы иметь возможность сообщать клиенту все эти сложные ограничения. Да, можно их передавать в простом текстовом виде, но это очень избыточно и сложно для автоматизации. Есть ли какая-то технология для декларативного описания взаимоотношений между параметрами системы?
Разработка идёт на C для сервера и на C++ для клиента. Я представлял себе одно правило как структуру, в которой можно задавать ID параметра, ID отношения к другому параметру ID другого параметра, значения и т.д. Примерно как {PARAM_A_ID, EQUAL, 10, EXCLUDE, PARAM_B_ID, EQUAL, 2}
Перед тем, как начать изобретать велосипед, я решил поискать подобную технологию или стандарт, но не смог найти. Если вы знаете нечто похожее, то прошу, подскажите.