diff --git a/libwccl/parser/grammar.g b/libwccl/parser/grammar.g
index f9e9f5f6e50739d6b506056283c7cfd5aa294775..87f0574a64d173a62c11f5ecc52f905f8dbb410b 100644
--- a/libwccl/parser/grammar.g
+++ b/libwccl/parser/grammar.g
@@ -2085,6 +2085,19 @@ match_cond_text
 	}
 ;
 
+// Match condition - oneof(variant1(v1), variant(v2), ...)
+// Returns boost::shared_ptr<OneOf>
+match_cond_oneof
+	[const Corpus2::Tagset& tagset, Variables& vars]
+	returns [boost::shared_ptr<OneOf> onf]
+{
+	boost::shared_ptr<std::vector<ConjConditions> > variants;
+}
+	: "oneof" LPAREN variants = match_variants [tagset, vars] RPAREN {
+		onf.reset(new OneOf(variants));
+	}
+;
+
 // ----------------------------------------------------------------------------
 
 // Match actions. Match action can be mark or unmark