This routine consumes the input stream, returning the next token found. If a token could not be found, then an error is raised.
auto scanner = new Scanner(cast(ubyte[])"".representation); assert(cast(EndOfStream)scanner.nextToken()); scanner = new Scanner(cast(ubyte[])"\n\n\r\n ".representation); assert(cast(Whitespace)scanner.nextToken()); assert(scanner.lineNumber == 4); assert(scanner.columnNumber == 3); scanner = new Scanner(cast(ubyte[])"STOP".representation); StackOpcode stackToken = cast(StackOpcode)scanner.nextToken(); assert(stackToken.m_opcode == "STOP"); scanner = new Scanner(cast(ubyte[])"PUSH1 0xa".representation); PushOpcode pushToken = cast(PushOpcode)scanner.nextToken(); assert(pushToken.m_opcode == "PUSH1"); assert(cast(Whitespace)scanner.nextToken()); Number number = cast(Number)scanner.nextToken(); assert(number.m_value == BigInt(10)); scanner = new Scanner(cast(ubyte[])"PUSH1 1234".representation); pushToken = cast(PushOpcode)scanner.nextToken(); assert(pushToken.m_opcode == "PUSH1"); assert(cast(Whitespace)scanner.nextToken()); number = cast(Number)scanner.nextToken(); assert(number.m_value == BigInt("1234"));
Scans the input stream provided into a series of tokens.