#ifndef LIBWCCL_PARSER_PARSER_H #define LIBWCCL_PARSER_PARSER_H #include <iostream> // ---------------------------------------------------------------------------- #include <sstream> // ---------------------------------------------------------------------------- #include <libcorpus2/tagset.h> // ---------------------------------------------------------------------------- #include <libwccl/variables.h> #include <libwccl/values/strset.h> // exceptions #include <libwccl/parser/ParserException.h> #include <libwccl/parser/ANTLRParserResult.h> // ---------------------------------------------------------------------------- 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; // --------------------------------------------------------------------------- // 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; const Corpus2::Tagset& tagset() const { return tagset_; } private: const Corpus2::Tagset &tagset_; }; #endif // LIBWCCL_PARSER_PARSER_H