CharStreams
from a variety of sources as of 4.7. The motivation was to support
Unicode code points > U+FFFF. ANTLRInputStream and
ANTLRFileStream are now deprecated in favor of the streams created
by this interface.
DEPRECATED: new ANTLRFileStream("myinputfile")
NEW: CharStreams.fromFileName("myinputfile")
WARNING: If you use both the deprecated and the new streams, you will see
a nontrivial performance degradation. This speed hit is because the
Lexer's internal code goes from a monomorphic to megamorphic
dynamic dispatch to get characters from the input stream. Java's
on-the-fly compiler (JIT) is unable to perform the same optimizations
so stick with either the old or the new streams, if performance is
a primary concern. See the extreme debugging and spelunking
needed to identify this issue in our timing rig:
https://github.com/antlr/antlr4/pull/1781
The ANTLR character streams still buffer all the input when you create
the stream, as they have done for ~20 years. If you need unbuffered
access, please note that it becomes challenging to create
parse trees. The parse tree has to point to tokens which will either
point into a stale location in an unbuffered stream or you have to copy
the characters out of the buffer into the token. That defeats the purpose
of unbuffered input. Per the ANTLR book, unbuffered streams are primarily
useful for processing infinite streams *during the parse.*
The new streams also use 8-bit buffers when possible so this new
interface supports character streams that use half as much memory
as the old ANTLRFileStream, which assumed 16-bit characters.
A big shout out to Ben Hamilton (github bhamiltoncx) for his superhuman
efforts across all targets to get true Unicode 3.1 support for U+10FFFF.
| Modifier and Type | Field and Description |
|---|---|
| private static final int |
| Access | Constructor and Description |
|---|---|
| private |
| Modifier and Type | Method and Description |
|---|---|
| public static CharStream | fromChannel(ReadableByteChannel channel)
Creates a |
| public static CharStream | fromChannel(ReadableByteChannel channel, Charset charset)
Creates a |
| public static CodePointCharStream | fromChannel(ReadableByteChannel channel, int bufferSize, CodingErrorAction decodingErrorAction, String sourceName)
Creates a |
| public static CodePointCharStream | fromChannel(ReadableByteChannel channel, Charset charset, int bufferSize, CodingErrorAction decodingErrorAction, String sourceName, long inputSize)
|
| public static CharStream | fromFileName(String fileName)
Creates a |
| public static CharStream | fromFileName(String fileName, Charset charset)
Creates a |
| public static CharStream | |
| public static CharStream | fromPath(Path path, Charset charset)
Creates a |
| public static CodePointCharStream | |
| public static CodePointCharStream | |
| public static CharStream | |
| public static CharStream | fromStream(InputStream is, Charset charset)
Creates a |
| public static CharStream | |
| public static CodePointCharStream | |
| public static CodePointCharStream | fromString(String s, String sourceName)
Creates a |
| DEFAULT_BUFFER_SIZE | back to summary |
|---|---|
| private static final int DEFAULT_BUFFER_SIZE | |
| CharStreams | back to summary |
|---|---|
| private CharStreams() | |
| fromChannel | back to summary |
|---|---|
| public static CharStream fromChannel(ReadableByteChannel channel) throws IOException Creates a | |
| fromChannel | back to summary |
|---|---|
| public static CharStream fromChannel(ReadableByteChannel channel, Charset charset) throws IOException Creates a | |
| fromChannel | back to summary |
|---|---|
| public static CodePointCharStream fromChannel(ReadableByteChannel channel, int bufferSize, CodingErrorAction decodingErrorAction, String sourceName) throws IOException Creates a | |
| fromChannel | back to summary |
|---|---|
| public static CodePointCharStream fromChannel(ReadableByteChannel channel, Charset charset, int bufferSize, CodingErrorAction decodingErrorAction, String sourceName, long inputSize) throws IOException | |
| fromFileName | back to summary |
|---|---|
| public static CharStream fromFileName(String fileName) throws IOException Creates a | |
| fromFileName | back to summary |
|---|---|
| public static CharStream fromFileName(String fileName, Charset charset) throws IOException Creates a | |
| fromPath | back to summary |
|---|---|
| public static CharStream fromPath(Path path) throws IOException Creates a | |
| fromPath | back to summary |
|---|---|
| public static CharStream fromPath(Path path, Charset charset) throws IOException Creates a | |
| fromReader | back to summary |
|---|---|
| public static CodePointCharStream fromReader(Reader r) throws IOException Creates a | |
| fromReader | back to summary |
|---|---|
| public static CodePointCharStream fromReader(Reader r, String sourceName) throws IOException Creates a | |
| fromStream | back to summary |
|---|---|
| public static CharStream fromStream(InputStream is) throws IOException Creates a | |
| fromStream | back to summary |
|---|---|
| public static CharStream fromStream(InputStream is, Charset charset) throws IOException Creates a | |
| fromStream | back to summary |
|---|---|
| public static CharStream fromStream(InputStream is, Charset charset, long inputSize) throws IOException | |
| fromString | back to summary |
|---|---|
| public static CodePointCharStream fromString(String s) Creates a | |
| fromString | back to summary |
|---|---|
| public static CodePointCharStream fromString(String s, String sourceName) Creates a | |