diff --git a/libwccl/parser/grammar.g b/libwccl/parser/grammar.g index ffebe4ef1cd0994e5f241c1137eee3f5d76d1156..f9e9f5f6e50739d6b506056283c7cfd5aa294775 100644 --- a/libwccl/parser/grammar.g +++ b/libwccl/parser/grammar.g @@ -85,6 +85,7 @@ header { #include <libwccl/ops/match/conditions/matchtext.h> #include <libwccl/ops/match/conditions/conjconditions.h> #include <libwccl/ops/match/conditions/tokencondition.h> + #include <libwccl/ops/match/conditions/oneof.h> #include <libwccl/ops/match/actions/markmatch.h> #include <libwccl/ops/match/actions/unmarkmatch.h> #include <libwccl/ops/functions/match/submatch.h> @@ -1992,6 +1993,28 @@ match_condition_in )* ; +// Match variants variant(v1), variant(v2), ... +// Retutns boost::shared_ptr<std::vector<ConjConditions> > +match_variants + [const Corpus2::Tagset& tagset, Variables& vars] + returns [boost::shared_ptr<std::vector<ConjConditions> > variants] +{ + variants.reset(new std::vector<ConjConditions>()); + + boost::shared_ptr<ConjConditions> variant; +} + : "variant" LPAREN variant = match_condition [tagset, vars] RPAREN { + // TODO + // variants->push_back(variant); + } + ( + COMMA "variant" LPAREN variant = match_condition [tagset, vars] RPAREN { + // TODO + // variants->push_back(variant); + } + )* +; + // One of the match condition // Returns boost::shared_ptr<const MatchCondition> match_cond_all