Browse Source

Add scan_peek_n to package text/scanner #800

gingerBill 4 years ago
parent
commit
b9aa94ee0d
1 changed files with 10 additions and 0 deletions
  1. 10 0
      core/text/scanner/scanner.odin

+ 10 - 0
core/text/scanner/scanner.odin

@@ -175,6 +175,16 @@ peek_n :: proc(s: ^Scanner, n: int) -> rune {
 	return ch;
 }
 
+scan_peek_n :: proc(s: ^Scanner, n: int) -> (tok: rune) {
+	assert(n >= 0);
+	prev_s := s^;
+	for in 0..<n {
+		tok = scan(s);
+	}
+	tok = scan(s);
+	s^ = prev_s;
+	return;
+}
 
 error :: proc(s: ^Scanner, msg: string) {
 	s.error_count += 1;