Package org.codehaus.janino

# Interface TokenStream

All Known Implementing Classes:
  `TokenStreamImpl`

public interface TokenStream
An interface that allows for peeking and consuming a stream of `Token`s.

## Method Summary

Modifier and Type
Method
Description
`Location`
`location()`
`Token`
`peek()`
`boolean`
`peek(String suspected)`
`int`
`peek(String... suspected)`
Checks whether the value of the next token equals any of the suspected; does not consume the next token.
`boolean`
`peek(TokenType suspected)`
`int`
`peek(TokenType... suspected)`
Checks whether the type of the next token is any of the suspected; does not consume the next token.
`Token`
`peekNextButOne()`
`boolean`
`peekNextButOne(String suspected)`
`boolean`
`peekRead(String suspected)`
Checks whether the value of the next token equals the suspected; if so, consumes the token.
`int`
`peekRead(String... suspected)`
Checks whether the value of the next token is one of the suspected; if so, consumes the token.
`String`
`peekRead(TokenType suspected)`
Checks whether the type of the next token is the suspected; if so, consumes the token.
`int`
`peekRead(TokenType... suspected)`
Checks whether the type of the next token is one of the suspected; if so, consumes the token.
`Token`
`read()`
`void`
`read(String expected)`
Verifies that the value of the next token equals expected, and consumes the token.
`int`
`read(String... expected)`
Verifies that the value of the next token equals one of the expected, and consumes the token.
`String`
`read(TokenType expected)`
Verifies that the type of the next token is the expected, and consumes the token.
`int`
`read(TokenType... expected)`
Verifies that the type of the next token is one of the expected, and consumes the token.
`void`
`setWarningHandler(WarningHandler warningHandler)`
By default, warnings are discarded, but an application my install a `WarningHandler`.

## Method Details

### peek

Token peek() throws CompileException, IOException

Returns:
  The next token, but does not consume it
Throws:
  `CompileException`
  `IOException`

### peek

boolean peek(String suspected) throws CompileException, IOException

Returns:
  Whether the value of the next token equals suspected; does not consume the next token
Throws:
  `CompileException`
  `IOException`

### peek

int peek(String... suspected) throws CompileException, IOException
Checks whether the value of the next token equals any of the suspected; does not consume the next token.

Returns:
  The index of the first of the suspected that equals the value of the next token, or -1 if the value of the next token equals none of the suspected
Throws:
  `CompileException`
  `IOException`

### peek

boolean peek(TokenType suspected) throws CompileException, IOException

Returns:
  Whether the type of the next token is suspected
Throws:
  `CompileException`
  `IOException`

### peek

int peek(TokenType... suspected) throws CompileException, IOException
Checks whether the type of the next token is any of the suspected; does not consume the next token.

Returns:
  The index of the first of the suspected types that is the next token's type, or -1 if the type of the next token is none of the suspected types
Throws:
  `CompileException`
  `IOException`

### peekNextButOne

Token peekNextButOne() throws CompileException, IOException

Returns:
  The next-but-one token, but consumes neither the next nor the next-but-one token
Throws:
  `CompileException`
  `IOException`

### peekNextButOne

boolean peekNextButOne(String suspected) throws CompileException, IOException

Returns:
  Whether the value of the next-but-one token equals the suspected; consumes neither the next nor the next-but-one token
Throws:
  `CompileException`
  `IOException`

### read

Token read() throws CompileException, IOException

Returns:
  The next token, which it also consumes, or `null` iff the scanner is at end-of-input
Throws:
  `CompileException`
  `IOException`

### read

void read(String expected) throws CompileException, IOException
Verifies that the value of the next token equals expected, and consumes the token.

Throws:
  `CompileException` - The value of the next token does not equal expected (this includes the case that the scanner is at end-of-input)
  `IOException`

### read

int read(String... expected) throws CompileException, IOException
Verifies that the value of the next token equals one of the expected, and consumes the token.

Returns:
  The index of the consumed token within expected
Throws:
  `CompileException` - The value of the next token does not equal any of the expected (this includes the case where the scanner is at end-of-input)
  `IOException`

### read

String read(TokenType expected) throws CompileException, IOException
Verifies that the type of the next token is the expected, and consumes the token.

Returns:
  The value of the next token; an `interned` String iff the token represents an identifier, `true`, `false`, `null`, or an operator
Throws:
  `CompileException` - The next token's type is not the expected
  `IOException`

### read

int read(TokenType... expected) throws CompileException, IOException
Verifies that the type of the next token is one of the expected, and consumes the token.

Returns:
  The index of the first of the expected types that is the next token's type; -1 if the type of the next token is none of the expected
Throws:
  `CompileException` - The next token's type is none of the expected
  `IOException`

### peekRead

boolean peekRead(String suspected) throws CompileException, IOException
Checks whether the value of the next token equals the suspected; if so, consumes the token.

Throws:
  `CompileException`
  `IOException`

### peekRead

int peekRead(String... suspected) throws CompileException, IOException
Checks whether the value of the next token is one of the suspected; if so, consumes the token.

Returns:
  The index of the first of the suspected that equals the next token's value; -1 iff the next token's value equals none of the suspected
Throws:
  `CompileException`
  `IOException`

### peekRead

@Nullable String peekRead(TokenType suspected) throws CompileException, IOException
Checks whether the type of the next token is the suspected; if so, consumes the token.

Returns:
  The value of the next token; an `interned` String iff the token represents an identifier, `true`, `false`, `null`, or an operator
Throws:
  `CompileException`
  `IOException`

### peekRead

int peekRead(TokenType... suspected) throws CompileException, IOException
Checks whether the type of the next token is one of the suspected; if so, consumes the token.

Returns:
  The index of the elements that is the next token's type, or -1 iff the type of next token is none of the suspected
Throws:
  `CompileException`
  `IOException`

### setWarningHandler

void setWarningHandler(@Nullable WarningHandler warningHandler)
By default, warnings are discarded, but an application my install a `WarningHandler`.

Notice that there is no `Parser.setErrorHandler()` method, but parse errors always throw a `CompileException`. The reason being is that there is no reasonable way to recover from parse errors and continue parsing, so there is no need to install a custom parse error handler.

Parameters:
  `warningHandler` - `null` to indicate that no warnings be issued

### location

Location location()

Returns:
  The location of the first character of the previously read (not peeked!) token