| | #pragma once |
| |
|
| | #include "util/string_piece.hh" |
| |
|
| | namespace MosesTraining { |
| | namespace Syntax { |
| |
|
| | 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_; |
| | }; |
| |
|
| | } |
| | } |
| |
|