From 9ea332d418dd1a371f30988939a05e6a8f4891b1 Mon Sep 17 00:00:00 2001 From: Bartosz Broda <bartosz.broda@gmail.com> Date: Sat, 11 Jun 2011 15:25:38 +0200 Subject: [PATCH] add bool ops simple indexing --- libmwereader/mweparser.cpp | 30 +++++++++++++++++++++++++++++- libmwereader/mweparser.h | 11 +++++++++-- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/libmwereader/mweparser.cpp b/libmwereader/mweparser.cpp index 3530760..901b1ef 100644 --- a/libmwereader/mweparser.cpp +++ b/libmwereader/mweparser.cpp @@ -14,7 +14,32 @@ namespace Corpus2 { MWEBuilder::MWEBuilder(const Tagset& tagset) : tagset_(tagset), parser_(tagset) { + } + + MWEBuilder::BoolOpPtr MWEBuilder::get_head_condition( + const std::string & headcond) + { + return get_condition(headcond, head_conditions_); + } + MWEBuilder::BoolOpPtr MWEBuilder::get_mwe_condition( + const std::string &cond) + { + return get_condition(cond, main_conditions_); + } + MWEBuilder::BoolOpPtr MWEBuilder::get_condition( + const std::string & cond, value_type& where) + { + value_type::iterator search = where.find(cond); + + if(search != where.end()) + return search->second; + + BoolOpPtr op = parser_.parseBoolOperator(cond); + + where[cond] = op; + + return op; } MWEParser::MWEParser(MWEIndex &index) @@ -29,7 +54,10 @@ namespace Corpus2 { void MWEParser::create_mwe() { - + MWEBuilder::BoolOpPtr main = mwe_builder_->get_mwe_condition( + wccl_operator_); + MWEBuilder::BoolOpPtr head = mwe_builder_->get_head_condition( + head_cond_); } std::string MWEParser::get_attribute(const AttributeList& attributes, diff --git a/libmwereader/mweparser.h b/libmwereader/mweparser.h index 71f4ce8..bb38228 100644 --- a/libmwereader/mweparser.h +++ b/libmwereader/mweparser.h @@ -6,7 +6,7 @@ #include <boost/unordered_map.hpp> #include <libwccl/parser/Parser.h> - +#include <libwccl/ops/operator.h> #include "mwe.h" namespace Corpus2 { @@ -14,11 +14,18 @@ namespace Corpus2 { class MWEBuilder { public: + typedef boost::shared_ptr<Wccl::Operator<Wccl::Bool> > BoolOpPtr; + MWEBuilder(const Tagset& tagset); + BoolOpPtr get_head_condition(const std::string &); + BoolOpPtr get_mwe_condition(const std::string &); + private: - typedef boost::unordered_map<std::string, std::string> value_type; + typedef boost::unordered_map<std::string, BoolOpPtr> value_type; + + BoolOpPtr get_condition(const std::string & cond, value_type& where); const Tagset& tagset_; /// str -> ptr to ccl operator -- GitLab