boost :: Spirit grammatica per lo schema indifferenziati
-
24-09-2019 - |
Domanda
Ho una sezione di uno schema per un modello che ho bisogno di analizzare. Diciamo sembra simile alla seguente.
{
type = "Standard";
hostname="x.y.z";
port="123";
}
Le proprietà sono:
- Gli elementi possono apparire non ordinata.
- Tutti gli elementi che fanno parte dello schema deve apparire, e nessun altro.
- Tutti gli attributi sintetizzati gli elementi andare in una struct.
- (opzionale) La potenza dello schema in futuro dipendono dal tipo di campo - cioè, campi differenti in base al tipo - ma io non sono preoccupato per questo al momento.
Soluzione
Secondo i forum Spirito, quanto segue è la risposta.
Si potrebbe desiderare di avere uno sguardo alla permutazione parser:
a ^ b ^ c
Il che corrisponde a una o B o C (o di una loro combinazione) in qualsiasi sequenza.
Se l'obiettivo è quello di analizzare in una struttura, che il modo migliore per previsioni prova tutte essenziali sono stati inizializzati, i membri della struttura deve essere avvolto con boost::optional<>
La presenza attributo può quindi essere facilmente testato post-analisi in fase di esecuzione .
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow