Skip to main content

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}