oni_comb_parser/input.rs
1pub trait Input {
2 type Token: Copy + Eq;
3 type Slice;
4 type Checkpoint: Copy + Eq + Ord;
5
6 /// 1トークン消費して返す。EOF なら None。
7 fn next_token(&mut self) -> Option<Self::Token>;
8 /// 次のトークンを消費せずに返す。
9 fn peek_token(&self) -> Option<Self::Token>;
10 /// checkpoint から現在位置までの Slice を返す。
11 fn slice_since(&self, cp: Self::Checkpoint) -> Self::Slice;
12
13 fn checkpoint(&self) -> Self::Checkpoint;
14 fn reset(&mut self, checkpoint: Self::Checkpoint);
15 fn offset(&self) -> usize;
16 fn remaining(&self) -> Self::Slice;
17 fn is_eof(&self) -> bool;
18}