Skip to content
Snippets Groups Projects
Parser.h 2.36 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>
rk's avatar
rk committed

#include <libwccl/parser/ParserException.h>
#include <libwccl/parser/ANTLRParserResult.h>
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<ANTLRParserResult<Wccl::StrSet> >
			parseStringOperator(const std::string&) const;
	boost::shared_ptr<ANTLRParserResult<Wccl::StrSet> >
			parseStringOperator(std::istream&) const;

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

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

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

	// ---------------------------------------------------------------------------
	// methods for parsing any operators
	boost::shared_ptr<ANTLRParserResultBase>
			parseAnyOperator(const std::string&) const;
	boost::shared_ptr<ANTLRParserResultBase>
			parseAnyOperator(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