summaryrefslogtreecommitdiff
path: root/chapter25/src/main/smp/sys/Scan.smp
diff options
context:
space:
mode:
Diffstat (limited to 'chapter25/src/main/smp/sys/Scan.smp')
-rw-r--r--chapter25/src/main/smp/sys/Scan.smp42
1 files changed, 0 insertions, 42 deletions
diff --git a/chapter25/src/main/smp/sys/Scan.smp b/chapter25/src/main/smp/sys/Scan.smp
deleted file mode 100644
index acf9fbb8..00000000
--- a/chapter25/src/main/smp/sys/Scan.smp
+++ /dev/null
@@ -1,42 +0,0 @@
-// -*- mode: java; -*-
-
-// Scanner; a simple string parser.
-struct Scan {
- int !x; // Cursor
- bool !bad; // True after a malformed token
- u8[~] buf; // Immutable byte array, must be set in 2nd constructor
-
- new Scan = { u8[~] b ->
- buf = b;
- };
-
- // Skip whitespace
- val skip = { ->
- while( x < buf# && buf[x] <= ' ' )
- x++;
- return self;
- };
-
- // True if find required character, and skip it; else False.
- val match = { u8 c ->
- skip();
- if( x >= buf# ) return false;
- if( buf[x] != c ) return false;
- x++;
- return true;
- };
-
- // Parse a simple number
- val number = { ->
- skip();
- bool neg = match('-');
- if( x >= buf# || buf[x] < '0' || '9' < buf[x] ) {
- bad = true;
- return 0;
- }
- i64 n = 0;
- while( x < buf# && '0' <= buf[x] & buf[x] <= '9' )
- n = n*10 + (buf[x++] - '0');
- return neg ? -n : n;
- };
-};