浏览代码

Add scan_peek_n to package text/scanner #800

gingerBill 4 年之前
父节点
当前提交
b9aa94ee0d
共有 1 个文件被更改,包括 10 次插入0 次删除
  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;