00001
00002
00003
00004
00005
00006
00007 #pragma once
00008
00009
00010 #include <vector>
00011
00012
00013
00014
00015 #include "moses/Range.h"
00016
00017 namespace Moses
00018 {
00019
00022 class ReorderingStack
00023 {
00024 private:
00025
00026 std::vector<Range> m_stack;
00027
00028 public:
00029
00030 size_t hash() const;
00031 bool operator==(const ReorderingStack& other) const;
00032
00033 int ShiftReduce(Range input_span);
00034
00035 private:
00036 void Reduce(Range input_span);
00037 };
00038
00039
00040 }