Boost :: Духовная грамматика для несортированной схемы
-
24-09-2019 - |
Вопрос
У меня есть раздел схемы для модели, которую мне нужно разбирать. Позвольте сказать, что это выглядит как следующее.
{
type = "Standard";
hostname="x.y.z";
port="123";
}
Свойства:
- Элементы могут казаться неупорядоченными.
- Все элементы, которые являются частью схемы, должны появляться, а никакой другой.
- Все синтезированные атрибуты элементов входят в структуру.
- (Необязательно) Схема может в будущем зависеть от поля типа - то есть разных полей на основе типа - однако я не беспокоюсь об этом в данный момент.
Решение
Согласно форумам Духа, следующее является ответом.
Возможно, вы захотите взглянуть на Parser перестановка:
a ^ b ^ c
Который соответствует или B или C (или их комбинацию) в любой последовательности.
Если цель состоит в том, чтобы разбираться в структуре, чем лучший способ проверить погоду, все необходимые члены были инициализированы, члены структуры должны быть обернуты с boost::optional<>
Присутствие атрибута может быть легко протестировано после анализа во время выполнения.
Не связан с StackOverflow