#ifndef LIBMWEREADER_MWE_H #define LIBMWEREADER_MWE_H #include <libcorpus2/io/reader.h> #include <libwccl/ops/operator.h> namespace Corpus2 { class LexicalUnit { public: LexicalUnit(const std::string &base, boost::shared_ptr<Wccl::Operator<Wccl::Bool> > condition, boost::shared_ptr<Wccl::Operator<Wccl::Bool> > head_cond, std::map<std::string, std::string> variables ); virtual bool IsHere(const Wccl::SentenceContext& sc, std::set<size_t> &out_position) = 0; protected: boost::shared_ptr<Wccl::Operator<Wccl::Bool> > condition_; boost::shared_ptr<Wccl::Operator<Wccl::Bool> > head_cond_; std::map<std::string, std::string> variables_; std::string base_; const Wccl::Position nowhere_; }; class FixedLU : public LexicalUnit { public: FixedLU(const std::string &base, boost::shared_ptr<Wccl::Operator<Wccl::Bool> > condition, boost::shared_ptr<Wccl::Operator<Wccl::Bool> > head_cond, std::map<std::string, std::string> variables ); virtual bool IsHere(const Wccl::SentenceContext& sc, std::set<size_t> &out_position); }; class FlexLU : public LexicalUnit { }; class MWEIndex // lub base -> vector<LexicalUnit> { }; }// ns Corpus2 #endif //LIBMWEREADER_MWE_H