#ifndef SEARCH_RULE__ #define SEARCH_RULE__ #include "lm/left.hh" #include "lm/word_index.hh" #include "search/arity.hh" #include "search/types.hh" #include #include #include namespace search { template class Context; class Rule { public: Rule() : arity_(0) {} static const lm::WordIndex kNonTerminal = lm::kMaxWordIndex; // Use kNonTerminal for non-terminals. template void Init(const Context &context, Score additive, const std::vector &words, bool prepend_bos); Score Bound() const { return bound_; } Score Additive() const { return additive_; } unsigned int Arity() const { return arity_; } const lm::ngram::ChartState &Lexical(unsigned int index) const { return lexical_[index]; } private: Score bound_, additive_; unsigned int arity_; std::vector lexical_; }; } // namespace search #endif // SEARCH_RULE__