bufio: make scanning bounded and incremental
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
// Migrated from 700_e2e row 104.
|
||||
package main;
|
||||
import bufio;
|
||||
import errors;
|
||||
import io;
|
||||
import memio;
|
||||
fn main() i32 = {
|
||||
@@ -14,26 +15,26 @@ fn main() i32 = {
|
||||
let buf: [16]u8;
|
||||
let sc: bufio.scanner = bufio.newscannerbuf(m, buf[0:16]);
|
||||
let acc: i32 = 0;
|
||||
let l1: (str | io.eof | io.error | bufio.overflow) = bufio.scanline(&sc);
|
||||
let l1: (str | io.eof | io.error | errors.overflow) = bufio.scanline(&sc);
|
||||
match (l1) {
|
||||
case let s: str => acc += s.len;
|
||||
case io.eof => acc += -100;
|
||||
case let _e: io.error => acc += -1000;
|
||||
case bufio.overflow => acc += -10000;
|
||||
case errors.overflow => acc += -10000;
|
||||
};
|
||||
let l2: (str | io.eof | io.error | bufio.overflow) = bufio.scanline(&sc);
|
||||
let l2: (str | io.eof | io.error | errors.overflow) = bufio.scanline(&sc);
|
||||
match (l2) {
|
||||
case let s: str => acc += s.len;
|
||||
case io.eof => acc += -100;
|
||||
case let _e: io.error => acc += -1000;
|
||||
case bufio.overflow => acc += -10000;
|
||||
case errors.overflow => acc += -10000;
|
||||
};
|
||||
let l3: (str | io.eof | io.error | bufio.overflow) = bufio.scanline(&sc);
|
||||
let l3: (str | io.eof | io.error | errors.overflow) = bufio.scanline(&sc);
|
||||
match (l3) {
|
||||
case let s: str => acc += -100;
|
||||
case io.eof => acc += 7;
|
||||
case let _e: io.error => acc += -1000;
|
||||
case bufio.overflow => acc += -10000;
|
||||
case errors.overflow => acc += -10000;
|
||||
};
|
||||
return acc;
|
||||
};
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
package main;
|
||||
import os;
|
||||
import bufio;
|
||||
import errors;
|
||||
import memio;
|
||||
import io;
|
||||
export fn main() i32 = {
|
||||
@@ -18,20 +19,20 @@ export fn main() i32 = {
|
||||
case let b: u8 => { fb = b; };
|
||||
case io.eof => { return 81; };
|
||||
case let e: io.error => { return 82; };
|
||||
case bufio.overflow => { return 92; };
|
||||
case errors.overflow => { return 92; };
|
||||
};
|
||||
if (fb != 65u8) { return 83; };
|
||||
match (bufio.scanbytes(&sc, 44u8)) {
|
||||
case let bs: []u8 => { if (bs.len != 1 || bs[0] != 66u8) { return 84; }; };
|
||||
case io.eof => { return 85; };
|
||||
case let e: io.error => { return 86; };
|
||||
case bufio.overflow => { return 87; };
|
||||
case errors.overflow => { return 87; };
|
||||
};
|
||||
match (bufio.scanbytes(&sc, 44u8)) {
|
||||
case let bs: []u8 => { if (bs.len != 2 || bs[0] != 67u8 || bs[1] != 68u8) { return 88; }; };
|
||||
case io.eof => { return 89; };
|
||||
case let e: io.error => { return 90; };
|
||||
case bufio.overflow => { return 91; };
|
||||
case errors.overflow => { return 91; };
|
||||
};
|
||||
return 53;
|
||||
};
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
package main;
|
||||
import os;
|
||||
import bufio;
|
||||
import errors;
|
||||
import memio;
|
||||
import io;
|
||||
export fn main() i32 = {
|
||||
@@ -19,19 +20,19 @@ export fn main() i32 = {
|
||||
case let s: str => { if (s.len == 2 && s[0] == 97u8 && s[1] == 98u8) { ok += 1; }; };
|
||||
case io.eof => { return 81; };
|
||||
case let e: io.error => { return 82; };
|
||||
case bufio.overflow => { return 83; };
|
||||
case errors.overflow => { return 83; };
|
||||
};
|
||||
match (bufio.scanline(&sc)) {
|
||||
case let s: str => { if (s.len == 1 && s[0] == 99u8) { ok += 1; }; };
|
||||
case io.eof => { return 84; };
|
||||
case let e: io.error => { return 85; };
|
||||
case bufio.overflow => { return 86; };
|
||||
case errors.overflow => { return 86; };
|
||||
};
|
||||
match (bufio.scanline(&sc)) {
|
||||
case let s: str => { return 87; };
|
||||
case io.eof => { ok += 1; };
|
||||
case let e: io.error => { return 88; };
|
||||
case bufio.overflow => { return 89; };
|
||||
case errors.overflow => { return 89; };
|
||||
};
|
||||
bufio.finish(&sc);
|
||||
if (ok != 3) { return 90; };
|
||||
|
||||
Reference in New Issue
Block a user