diff --git a/peglib.h b/peglib.h index a88bcd4..00c9b5c 100644 --- a/peglib.h +++ b/peglib.h @@ -1689,8 +1689,9 @@ private: } }; - g["Primary"] = [&](const SemanticValues& sv, any& dt) { + g["Primary"] = [&](const SemanticValues& sv, any& dt) -> std::shared_ptr { Data& data = *dt.get(); + switch (sv.choice) { case 0: { // Reference auto ignore = (sv.size() == 2); @@ -1712,8 +1713,7 @@ private: return sv[1].get>(); } case 2: { // Anchor - auto ope = sv[1].get>(); - return anc(ope); + return anc(sv[1].get>()); } case 3: { // Capture auto name = std::string(sv[0].s, sv[0].n);