From bf221853b0cd09fddd28c879257def298b2b5d95 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pawe=C5=82=20K=C4=99dzia?= <pawel.kedzia@pwr.wroc.pl>
Date: Fri, 10 Dec 2010 09:44:39 +0100
Subject: [PATCH] Added agrflt operator

---
 libwccl/parser/grammar.g | 30 ++++++++++++++++++++++++++----
 1 file changed, 26 insertions(+), 4 deletions(-)

diff --git a/libwccl/parser/grammar.g b/libwccl/parser/grammar.g
index c0f08ca..d4ee973 100644
--- a/libwccl/parser/grammar.g
+++ b/libwccl/parser/grammar.g
@@ -43,6 +43,7 @@ header {
 	#include <libwccl/ops/functions/strset/tolower.h>
 	#include <libwccl/ops/functions/strset/getlemmas.h>
 	
+	#include <libwccl/ops/functions/tset/agrfilter.h>
   #include <libwccl/ops/functions/tset/catfilter.h>
 	#include <libwccl/ops/functions/tset/getsymbols.h>
 	#include <libwccl/ops/functions/tset/getwordclass.h>
@@ -498,10 +499,11 @@ symset_operator
 	returns [boost::shared_ptr<Function<TSet> > ret]
 	: ret = symset_condition [tagset, vars]
 	| (SYMBOL LBRACKET) => (ret = symset_getsymbol [tagset, vars])
-	| ret = symset_var_val   [tagset, vars]
-	| ret = symset_class     [tagset, vars]
-	| ret = symset_range     [tagset, vars]
-	| ret = symset_catflt    [tagset, vars]
+	| ret = symset_var_val [tagset, vars]
+	| ret = symset_class   [tagset, vars]
+	| ret = symset_range   [tagset, vars]
+	| ret = symset_catflt  [tagset, vars]
+	| ret = symset_agrflt  [tagset, vars]
 	//
 	| LPAREN ret = symset_operator [tagset, vars] RPAREN
 ;
@@ -621,6 +623,26 @@ symset_catflt
   	}
 ;
 
+// ----------------------------------------------------------------------------
+// Agrflt operator
+symset_agrflt
+  [const Corpus2::Tagset& tagset, Variables& vars]
+  returns [boost::shared_ptr<Function<TSet> > ret]
+{
+  boost::shared_ptr<Function<TSet> > attr, mask;
+  boost::shared_ptr<Function<Position> > lpos, rpos;
+}
+  : "agrflt" LPAREN 
+			lpos = position_operator [tagset, vars] COMMA
+			rpos = position_operator [tagset, vars] COMMA
+			attr = symset_operator   [tagset, vars] COMMA
+			mask = symset_operator   [tagset, vars] 
+  	RPAREN {
+  	  ret.reset(new AgrFilter(lpos, rpos, attr, mask, tagset));
+  	}
+;
+
+
 ///////////////////////////////////////////////////////////////////////////////
 // Position operator
 // Returns boost::shared_ptr<Function<Position> >
-- 
GitLab