00001 #pragma once 00002 00003 #include <cstddef> 00004 00005 #include "moses/Syntax/RuleTable.h" 00006 00007 namespace Moses 00008 { 00009 00010 class Phrase; 00011 class TargetPhrase; 00012 class TargetPhraseCollection; 00013 class Word; 00014 00015 namespace Syntax 00016 { 00017 namespace S2T 00018 { 00019 00020 // Base class for parser-specific trie types. 00021 class RuleTrie : public RuleTable 00022 { 00023 public: 00024 RuleTrie(const RuleTableFF *ff) : RuleTable(ff) {} 00025 00026 virtual bool HasPreterminalRule(const Word &) const = 0; 00027 00028 private: 00029 friend class RuleTrieCreator; 00030 00031 virtual TargetPhraseCollection::shared_ptr 00032 GetOrCreateTargetPhraseCollection(const Phrase &source, 00033 const TargetPhrase &target, 00034 const Word *sourceLHS) = 0; 00035 00036 virtual void SortAndPrune(std::size_t) = 0; 00037 }; 00038 00039 } // namespace S2T 00040 } // namespace Syntax 00041 } // namespace Moses