Я пытаюсь разобрать строку в структуры, используя подталкивание дух x3:Синтаксический список строк с последующим списком строк с духом x3
struct identifier {
std::vector<std::string> namespaces;
std::vector<std::string> classes;
std::string identifier;
};
Теперь у меня есть правило синтаксического анализа, чтобы соответствовать строки, как это:
foo::bar::baz.bla.blub
foo.bar
boo::bar
foo
Мое правило анализа выглядит так.
auto const nested_identifier_def =
x3::lexeme[
-(id_string % "::")
>> -(id_string % ".")
>> id_string
];
id_string
, где разбирает комбинации alphanum
. Я знаю, что это правило не работает для синтаксического анализа, поскольку я хочу его, потому что при разборе foo.bar
эта часть правила -(id_string % ".")
потребляет всю строку. Как я могу изменить правило для правильного анализа в структуре?