Package org.codehaus.janino

# Class Scanner

java.lang.Object
org.codehaus.janino.Scanner

public class Scanner extends Object
Splits up a character stream into tokens and returns them as `String` objects.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`SYSTEM_PROPERTY_SOURCE_DEBUGGING_DIR`
If the source code is not read from a file, debuggers have a hard time locating the source file for source-level debugging.
`static final String`
`SYSTEM_PROPERTY_SOURCE_DEBUGGING_ENABLE`
Setting this system property to 'true' enables source-level debugging.
`static final String`
`SYSTEM_PROPERTY_SOURCE_DEBUGGING_KEEP`
If set to "true", then the temporary source code files are not deleted on exit.

## Constructor Summary

Constructors
Constructor
Description
`Scanner(File file)`
Deprecated.
This method is deprecated because it leaves the input file open
`Scanner(File file, String encoding)`
Deprecated.
This method is deprecated because it leaves the input file open
`Scanner(String fileName)`
Deprecated.
This method is deprecated because it leaves the input file open
`Scanner(String fileName, InputStream is)`
Sets up a scanner that reads tokens from the given `InputStream` in the platform default encoding.
`Scanner(String fileName, InputStream is, String encoding)`
Sets up a scanner that reads tokens from the given `InputStream` with the given encoding (`null` means platform default encoding).
`Scanner(String fileName, Reader in)`
Sets up a scanner that reads tokens from the given `Reader`.
`Scanner(String fileName, Reader in, int initialLineNumber, int initialColumnNumber)`
Creates a `Scanner` that counts lines and columns from non-default initial values.
`Scanner(String fileName, String encoding)`
Deprecated.
This method is deprecated because it leaves the input file open

## Method Summary

Modifier and Type
Method
Description
`void`
`close()`
Deprecated.
This method is deprecated, because the concept described above is confusing.
`String`
`getFileName()`
`Location`
`location()`
`Token`
`produce()`
Produces and returns the next token.
`void`
`setIgnoreWhiteSpace(boolean value)`
If value is `true`, then white space in the input stream is ignored, rather than scanned as a `TokenType.WHITE_SPACE` token.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### SYSTEM_PROPERTY_SOURCE_DEBUGGING_ENABLE

public static final String SYSTEM_PROPERTY_SOURCE_DEBUGGING_ENABLE
Setting this system property to 'true' enables source-level debugging. Typically, this means that compilation is executed with "`-g:all`" instead of "`-g:none`".

See Also:
  - Constant Field Values

### SYSTEM_PROPERTY_SOURCE_DEBUGGING_DIR

public static final String SYSTEM_PROPERTY_SOURCE_DEBUGGING_DIR
If the source code is not read from a file, debuggers have a hard time locating the source file for source-level debugging. As a workaround, a copy of the source code is written to a temporary file, which must be included in the debugger's source path. If this system property is set, the temporary source file is created in that directory, otherwise in the default temporary-file directory.

See Also:
  - `File.createTempFile(String, String, File)`
  - Constant Field Values

### SYSTEM_PROPERTY_SOURCE_DEBUGGING_KEEP

public static final String SYSTEM_PROPERTY_SOURCE_DEBUGGING_KEEP
If set to "true", then the temporary source code files are not deleted on exit. That may be useful to interpret stack traces offline.

See Also:
  - Constant Field Values

## Constructor Details

### Scanner

@Deprecated public Scanner(String fileName) throws IOException
Deprecated.
This method is deprecated because it leaves the input file open

Throws:
  `IOException`

### Scanner

@Deprecated public Scanner(String fileName, String encoding) throws IOException
Deprecated.
This method is deprecated because it leaves the input file open

Throws:
  `IOException`

### Scanner

@Deprecated public Scanner(File file) throws IOException
Deprecated.
This method is deprecated because it leaves the input file open

Throws:
  `IOException`

### Scanner

@Deprecated public Scanner(File file, @Nullable String encoding) throws IOException
Deprecated.
This method is deprecated because it leaves the input file open

Throws:
  `IOException`

### Scanner

public Scanner(@Nullable String fileName, InputStream is) throws IOException
Sets up a scanner that reads tokens from the given `InputStream` in the platform default encoding.

The fileName is solely used for reporting in thrown exceptions.

Throws:
  `IOException`

### Scanner

public Scanner(@Nullable String fileName, InputStream is, @Nullable String encoding) throws IOException
Sets up a scanner that reads tokens from the given `InputStream` with the given encoding (`null` means platform default encoding).

The fileName is used for reporting errors during compilation and for source level debugging, and should name an existing file. If `null` is passed, and the system property `org.codehaus.janino.source_debugging.enable` is set to "true", then a temporary file in `org.codehaus.janino.source_debugging.dir` or the system's default temp dir is created in order to make the source code available to a debugger.

Throws:
  `IOException`

### Scanner

public Scanner(@Nullable String fileName, Reader in) throws IOException
Sets up a scanner that reads tokens from the given `Reader`.

The fileName is used for reporting errors during compilation and for source level debugging, and should name an existing file. If `null` is passed, and the system property `org.codehaus.janino.source_debugging.enable` is set to "true", then a temporary file in `org.codehaus.janino.source_debugging.dir` or the system's default temp dir is created in order to make the source code available to a debugger.

Throws:
  `IOException`

### Scanner

public Scanner(@Nullable String fileName, Reader in, int initialLineNumber, int initialColumnNumber) throws IOException
Creates a `Scanner` that counts lines and columns from non-default initial values.

Throws:
  `IOException`

## Method Details

### setIgnoreWhiteSpace

public void setIgnoreWhiteSpace(boolean value)
If value is `true`, then white space in the input stream is ignored, rather than scanned as a `TokenType.WHITE_SPACE` token. Since white space is typically quite numerous, this optimization may save considerable overhead.

### getFileName

@Nullable public String getFileName()

Returns:
  The file name optionally passed to the constructor

### close

@Deprecated public void close() throws IOException
Deprecated.
This method is deprecated, because the concept described above is confusing. An application should close the underlying `InputStream` or `Reader` itself
Closes the character source (file, `InputStream`, `Reader`) associated with this object. The results of future calls to `produce()` are undefined.

Throws:
  `IOException`

### location

public Location location()

Returns:
  The `Location` of the previously read (or peeked) token.

### produce

public Token produce() throws CompileException, IOException
Produces and returns the next token. Notice that end-of-input is not signalized with a `null` product, but by an `TokenType.END_OF_INPUT`-type token.

Throws:
  `CompileException`
  `IOException`