From 7cbbe38a8601072d1a2cc234ce9f44ec6b6beb3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20K=C4=99dzia?= <pawel.kedzia@pwr.wroc.pl> Date: Thu, 21 Apr 2011 23:14:14 +0200 Subject: [PATCH] Added longest() operator to the grammar --- libwccl/parser/grammar.g | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/libwccl/parser/grammar.g b/libwccl/parser/grammar.g index 87f0574..628410a 100644 --- a/libwccl/parser/grammar.g +++ b/libwccl/parser/grammar.g @@ -86,6 +86,7 @@ header { #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/conditions/longest.h> #include <libwccl/ops/match/actions/markmatch.h> #include <libwccl/ops/match/actions/unmarkmatch.h> #include <libwccl/ops/functions/match/submatch.h> @@ -2023,6 +2024,8 @@ match_cond_all : ret = match_cond_optional [tagset, vars] | ret = match_cond_repeate [tagset, vars] | ret = match_cond_token [tagset, vars] + | ret = match_cond_oneof [tagset, vars] + | ret = match_cond_longest [tagset, vars] | ret = match_cond_is | ret = match_cond_text ; @@ -2098,6 +2101,19 @@ match_cond_oneof } ; +// Match condition - longest(variant1(v1), variant(v2), ...) +// Returns boost::shared_ptr<Longest> +match_cond_longest + [const Corpus2::Tagset& tagset, Variables& vars] + returns [boost::shared_ptr<Longest> lng] +{ + boost::shared_ptr<std::vector<ConjConditions> > variants; +} + : "longest" LPAREN variants = match_variants [tagset, vars] RPAREN { + lng.reset(new Longest(variants)); + } +; + // ---------------------------------------------------------------------------- // Match actions. Match action can be mark or unmark -- GitLab