ling/lexer/cursor.rs
1// src/lexer/cursor.rs
2#[derive(Clone)]
3pub struct Cursor<'a> {
4 source: &'a str,
5 offset: usize,
6 _line: usize,
7 col: usize,
8}
9
10impl<'a> Cursor<'a> {
11 pub fn new(source: &'a str) -> Self {
12 Self { source, offset: 0, _line: 0, col: 0 }
13 }
14
15 pub fn advance(&mut self, count: usize) {
16 self.offset += count;
17 self.col += count;
18 }
19
20 pub fn peek(&self) -> Option<char> {
21 self.source[self.offset..].chars().next()
22 }
23}