diff --git a/libwccl/ops/match/conditions/tokencondition.cpp b/libwccl/ops/match/conditions/tokencondition.cpp index 6dedf2e8281b45cfd0054271eeea62a23121ac25..dac85cc6f7fba25eb049b783e227531496611b41 100644 --- a/libwccl/ops/match/conditions/tokencondition.cpp +++ b/libwccl/ops/match/conditions/tokencondition.cpp @@ -40,16 +40,18 @@ std::string TokenCondition::to_string(const Corpus2::Tagset& tagset) const MatchResult TokenCondition::apply(const ActionExecContext& context) const { int orig_iter = context.sentence_context().get_position(); - if (_predicate->apply(context)->get_value()) { - boost::shared_ptr<TokenMatch> match(new TokenMatch(context.sentence_context().get_position())); - // increase current sentence position by one after successful token match - context.sentence_context().set_position(orig_iter + 1); - return MatchResult(match); - } - else { - context.sentence_context().set_position(orig_iter); - return MatchResult(); + if (context.sentence_context().is_current_inside()) { + if (_predicate->apply(context)->get_value()) { + boost::shared_ptr<TokenMatch> match(new TokenMatch(context.sentence_context().get_position())); + // increase current sentence position by one after successful token match + context.sentence_context().set_position(orig_iter + 1); + return MatchResult(match); + } } + + // else + context.sentence_context().set_position(orig_iter); + return MatchResult(); } std::ostream& TokenCondition::write_to(std::ostream& os) const