boost :: Spirit Grammar для несортированной схемы - PullRequest
4 голосов
/ 02 февраля 2010

У меня есть раздел схемы для модели, которую мне нужно проанализировать. Допустим, это выглядит следующим образом.

{
  type = "Standard";
  hostname="x.y.z";
  port="123";
}

Свойства:

  1. Элементы могут быть неупорядоченными.
  2. Должны появиться все элементы, являющиеся частью схемы, и никакие другие.
  3. Все синтезированные атрибуты элементов входят в структуру.
  4. (необязательно). Схема может в будущем зависеть от поля типа, т. Е. От различных полей, основанных на типе, однако в данный момент меня это не беспокоит.

1 Ответ

4 голосов
/ 02 февраля 2010

Согласно форумам Spirit, ответ следующий:

Возможно, вы захотите взглянуть на анализатор перестановок:

a ^ b ^ c 

Что соответствует a или bили c (или их комбинацию) в любой последовательности.

Если целью является синтаксический анализ структуры, то лучший способ проверить, были ли инициализированы все необходимые элементы, должны бытьобернутый boost::optional<> Наличие атрибута может быть легко проверено после анализа во время выполнения.

...