33 lines
824 B
Rust
33 lines
824 B
Rust
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()
|
||
}
|
||
}
|
||
|