00001 #pragma once 00002 00003 namespace Moses 00004 { 00005 namespace Syntax 00006 { 00007 namespace S2T 00008 { 00009 00010 class PChart; 00011 00012 // Base class for parsers. 00013 template<typename Callback> 00014 class Parser 00015 { 00016 public: 00017 typedef Callback CallbackType; 00018 00019 Parser(PChart &chart) : m_chart(chart) {} 00020 00021 virtual ~Parser() {} 00022 00023 virtual void EnumerateHyperedges(const Range &, Callback &) = 0; 00024 protected: 00025 PChart &m_chart; 00026 }; 00027 00028 } // S2T 00029 } // Syntax 00030 } // Moses