Scanner

Scans the input stream provided into a series of tokens.

Constructors

this
this(ubyte[] charStream)
Undocumented in source.

Members

Functions

nextToken
Token nextToken()

This routine consumes the input stream, returning the next token found. If a token could not be found, then an error is raised.

Properties

columnNumber
size_t columnNumber [@property getter]
currentToken
Token currentToken [@property getter]
lineNumber
size_t lineNumber [@property getter]

Examples

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"));

Meta