boost::Spirit Grammar for unsorted schema
boost-spirit, c++, grammar, parsing, recursive-descent
Solution
According to the Spirit forums, the following is the answer.
You might want to have a look at the permutation parser:
a ^ b ^ c
Which matches a or b or c (or a combination thereof) in any sequence.
If the objective is to parse into a struct, than the best way to test weather all essential members have been initialized, the struct members should be wrapped with `boost::optional<>` The attribute presence may then be easily tested post-parsing during run-time.
Problem
I have a section of a schema for a model that I need to parse. Lets say it looks like the following. ``` { type = "Standard"; hostname="x.y.z"; port="123"; } ``` The properties are: - The elements may appear unordered. - All elements that are part of the schema must appear, and no other. - All of the elements' synthesised attributes go into a struct. - (optional) The schema might in the future depend on the type field -- i.e., different fields based on type -- however I am not concerned about this at the moment.