00001 /* 00002 * NonTerm.h 00003 * 00004 * Created on: 22 Feb 2014 00005 * Author: hieu 00006 */ 00007 #pragma once 00008 #include <string> 00009 #include "RuleSymbol.h" 00010 #include "moses/TypeDef.h" 00011 00012 class ConsistentPhrase; 00013 class Parameter; 00014 00015 class NonTerm : public RuleSymbol 00016 { 00017 public: 00018 00019 NonTerm(const ConsistentPhrase &consistentPhrase, 00020 const std::string &source, 00021 const std::string &target); 00022 virtual ~NonTerm(); 00023 00024 const ConsistentPhrase &GetConsistentPhrase() const { 00025 return *m_consistentPhrase; 00026 } 00027 00028 int GetWidth(Moses::FactorDirection direction) const; 00029 00030 virtual bool IsNonTerm() const { 00031 return true; 00032 } 00033 00034 std::string GetString() const { 00035 return m_source + m_target; 00036 } 00037 00038 virtual std::string Debug() const; 00039 virtual void Output(std::ostream &out) const; 00040 void Output(std::ostream &out, Moses::FactorDirection direction) const; 00041 00042 const std::string &GetLabel(Moses::FactorDirection direction) const; 00043 bool IsHiero(Moses::FactorDirection direction, const Parameter ¶ms) const; 00044 bool IsHiero(const Parameter ¶ms) const; 00045 00046 protected: 00047 const ConsistentPhrase *m_consistentPhrase; 00048 std::string m_source, m_target; 00049 }; 00050