|
#pragma once |
|
|
|
#include "util/string_piece.hh" |
|
|
|
namespace Moses |
|
{ |
|
namespace Syntax |
|
{ |
|
namespace F2S |
|
{ |
|
|
|
enum TreeFragmentTokenType { |
|
TreeFragmentToken_EOS, |
|
TreeFragmentToken_LSB, |
|
TreeFragmentToken_RSB, |
|
TreeFragmentToken_WORD |
|
}; |
|
|
|
struct TreeFragmentToken { |
|
public: |
|
TreeFragmentToken(TreeFragmentTokenType, StringPiece, std::size_t); |
|
TreeFragmentTokenType type; |
|
StringPiece value; |
|
std::size_t pos; |
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TreeFragmentTokenizer |
|
{ |
|
public: |
|
TreeFragmentTokenizer(); |
|
TreeFragmentTokenizer(const StringPiece &); |
|
|
|
const TreeFragmentToken &operator*() const { |
|
return value_; |
|
} |
|
const TreeFragmentToken *operator->() const { |
|
return &value_; |
|
} |
|
|
|
TreeFragmentTokenizer &operator++(); |
|
TreeFragmentTokenizer operator++(int); |
|
|
|
friend bool operator==(const TreeFragmentTokenizer &, |
|
const TreeFragmentTokenizer &); |
|
|
|
friend bool operator!=(const TreeFragmentTokenizer &, |
|
const TreeFragmentTokenizer &); |
|
|
|
private: |
|
StringPiece str_; |
|
TreeFragmentToken value_; |
|
StringPiece::const_iterator iter_; |
|
StringPiece::const_iterator end_; |
|
std::size_t pos_; |
|
}; |
|
|
|
} |
|
} |
|
} |
|
|