diff options
Diffstat (limited to 'chapter25/src/main/smp/sys/Scan.smp')
| -rw-r--r-- | chapter25/src/main/smp/sys/Scan.smp | 42 |
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; - }; -}; |
