diff --git a/libwccl/parser/grammar.g b/libwccl/parser/grammar.g index 9628c693cc8524ca85f61be7cc63fe60f4945370..bf12dd5d617a814ae56f5889bb307af6f9b4d2c1 100644 --- a/libwccl/parser/grammar.g +++ b/libwccl/parser/grammar.g @@ -41,6 +41,7 @@ header { #include <libwccl/ops/functions/strset/getlemmas.h> #include <libwccl/ops/functions/tset/getsymbols.h> + #include <libwccl/ops/functions/tset/getwordclass.h> #include <libwccl/ops/functions/position/relativeposition.h> @@ -488,6 +489,7 @@ symset_operator : (symset_condition[tagset, vars]) => (ret = symset_condition [tagset, vars]) | (symset_getsymbol[tagset, vars]) => (ret = symset_getsymbol [tagset, vars]) | (symset_var_val [tagset, vars]) => (ret = symset_var_val [tagset, vars]) + | (symset_class [tagset, vars]) => (ret = symset_class [tagset, vars]) // | LPAREN ret = symset_operator [tagset, vars] RPAREN ; @@ -553,6 +555,19 @@ symset_getsymbol } ; +// ---------------------------------------------------------------------------- +// Class operator. +symset_class + [const Corpus2::Tagset& tagset, Variables& vars] + returns [boost::shared_ptr<Function<TSet> > ret] +{ + boost::shared_ptr<Function<Position> > pos; +} + : "class" LBRACKET pos = position_operator [tagset, vars] RBRACKET { + ret.reset(new GetWordClass(pos)); + } +; + /////////////////////////////////////////////////////////////////////////////// // Position operator // Returns boost::shared_ptr<Function<Position> >