Skip to content
Snippets Groups Projects
Parser.h 2.92 KiB
Newer Older
#ifndef LIBWCCL_PARSER_PARSER_H
#define LIBWCCL_PARSER_PARSER_H
rk's avatar
rk committed

#include <iostream>

// ----------------------------------------------------------------------------
rk's avatar
rk committed
#include <sstream>

// ----------------------------------------------------------------------------
rk's avatar
rk committed
#include <libcorpus2/tagset.h>

// ----------------------------------------------------------------------------
#include <libwccl/variables.h>
#include <libwccl/values/strset.h>
#include <libwccl/ops/operator.h>
rk's avatar
rk committed

// rules
#include <libwccl/ops/rulesequence.h>

#include <libwccl/parser/ParserException.h>
rk's avatar
rk committed

// ----------------------------------------------------------------------------
rk's avatar
rk committed

rk's avatar
rk committed
class Parser {
public:
	Parser(const Corpus2::Tagset&);
	~Parser();

	// ---------------------------------------------------------------------------
	// methods for parsing string operators
	boost::shared_ptr<Operator<StrSet> >
			parseStringOperator(const std::string&) const;
	boost::shared_ptr<Operator<StrSet> >
			parseStringOperator(std::istream&) const;

	// ---------------------------------------------------------------------------
	// methods for parsing bool operators
	boost::shared_ptr<Operator<Bool> >
			parseBoolOperator(const std::string&) const;
	boost::shared_ptr<Operator<Bool> >
			parseBoolOperator(std::istream&) const;

	// ---------------------------------------------------------------------------
	// methods for parsing bool operators
	boost::shared_ptr<Operator<TSet> >
			parseSymSetOperator(const std::string&) const;
	boost::shared_ptr<Operator<TSet> >
			parseSymSetOperator(std::istream&) const;
rk's avatar
rk committed

ilor's avatar
ilor committed
	// ---------------------------------------------------------------------------
	// methods for parsing position operators
	boost::shared_ptr<Operator<Position> >
ilor's avatar
ilor committed
			parsePositionOperator(const std::string&) const;
	boost::shared_ptr<Operator<Position> >
ilor's avatar
ilor committed
			parsePositionOperator(std::istream&) const;

	// ---------------------------------------------------------------------------
	// methods for parsing any operators
	boost::shared_ptr<FunctionalOperator>
			parseAnyOperator(const std::string&) const;
	boost::shared_ptr<FunctionalOperator>
			parseAnyOperator(std::istream&) const;
	// ---------------------------------------------------------------------------
	// Parsing rule sequence from input string
	boost::shared_ptr<RuleSequence>
			parseRuleSequence(const std::string&) const;
	boost::shared_ptr<RuleSequence>
			parseRuleSequence(std::istream&) const;
ilor's avatar
ilor committed

	// ---------------------------------------------------------------------------
	// Parsing single rule from input string
Adam Wardynski's avatar
Adam Wardynski committed
	boost::shared_ptr<TagRule>
			parseSingleRule(const std::string&) const;
Adam Wardynski's avatar
Adam Wardynski committed
	boost::shared_ptr<TagRule>
			parseSingleRule(std::istream&) const;

	// ---------------------------------------------------------------------------
ilor's avatar
ilor committed
	const Corpus2::Tagset& tagset() const {
		return tagset_;
	}

rk's avatar
rk committed
private:
ilor's avatar
ilor committed
	const Corpus2::Tagset &tagset_;
rk's avatar
rk committed
};

#endif // LIBWCCL_PARSER_PARSER_H