Skip to main content

oni_comb_parser/
input.rs

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