diff --git a/core/text/scanner/scanner.odin b/core/text/scanner/scanner.odin index bd1b24fe2..c46533d3f 100644 --- a/core/text/scanner/scanner.odin +++ b/core/text/scanner/scanner.odin @@ -150,32 +150,26 @@ next :: proc(s: ^Scanner) -> rune { return ch; } -peek :: proc(s: ^Scanner) -> rune { +peek :: proc(s: ^Scanner, n := 0) -> (ch: rune) { if s.ch == -2 { s.ch = advance(s); if s.ch == '\ufeff' { // Ignore BOM s.ch = advance(s); } } - return s.ch; -} - -peek_n :: proc(s: ^Scanner, n: int) -> rune { - assert(n >= 0); - if n == 0 { - return peek(s); + ch = s.ch; + if n > 0 { + prev_s := s^; + for in 0.. (tok: rune) { +peek_token :: proc(s: ^Scanner, n := 0) -> (tok: rune) { assert(n >= 0); prev_s := s^; for in 0..