Files
hakorune/src/tokenizer/cursor.rs

33 lines
824 B
Rust
Raw Normal View History

use super::NyashTokenizer;
impl NyashTokenizer {
/// 現在の文字を取得
pub(crate) fn current_char(&self) -> Option<char> {
self.input.get(self.position).copied()
}
/// 次の文字を先読み
pub(crate) fn peek_char(&self) -> Option<char> {
self.input.get(self.position + 1).copied()
}
/// 1文字進める行/列も更新)
pub(crate) fn advance(&mut self) {
if let Some(c) = self.current_char() {
self.position += 1;
if c == '\n' {
self.line += 1;
self.column = 1;
} else {
self.column += 1;
}
}
}
/// 入力の終端に到達しているか
pub(crate) fn is_at_end(&self) -> bool {
self.position >= self.input.len()
}
}