Skip to content
Snippets Groups Projects
mwe.h 1.2 KiB
Newer Older
#ifndef LIBMWEREADER_MWE_H
#define LIBMWEREADER_MWE_H

#include <libcorpus2/io/reader.h>
Bartosz Broda's avatar
Bartosz Broda committed
#include <libwccl/ops/operator.h>

namespace Corpus2 {

class LexicalUnit
{
Bartosz Broda's avatar
Bartosz Broda committed
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;

Bartosz Broda's avatar
Bartosz Broda committed
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