ich einen String in eine Struktur mit boost Geist x3 zu analysieren versuchen:Parsing eine Liste von Strings durch eine Liste von Strings mit Geist x3 gefolgt
struct identifier {
std::vector<std::string> namespaces;
std::vector<std::string> classes;
std::string identifier;
};
jetzt habe ich eine Parser-Regel einen Strings passen wie dies:
foo::bar::baz.bla.blub
foo.bar
boo::bar
foo
meine Parserregel sieht so aus.
auto const nested_identifier_def =
x3::lexeme[
-(id_string % "::")
>> -(id_string % ".")
>> id_string
];
wo id_string
Kombinationen von alphanum
analysiert. Ich weiß, dass diese Regel nicht funktioniert, um zu analysieren, wie ich es will, weil während der Analyse foo.bar
zum Beispiel dieser Teil der Regel -(id_string % ".")
die gesamte Zeichenfolge verbraucht. Wie kann ich die Regel ändern, um korrekt in der Struktur zu analysieren?