Класс StreamTokenizer
public class StreamTokenizer extends Object
StreamTokenizer принимает входной поток и разбирает его на «токены», которые можно считывать по одному. Процесс разбора управляется таблицей и рядом флагов, для которых можно задавать различные состояния. Токенизатор потока может распознавать идентификаторы, числа, строки в кавычках и различные стили комментариев. Каждый байт, считываемый из входного потока, рассматривается как символ в диапазоне от '\u0000' до '\u00FF'. Значение символа используется для поиска пяти возможных атрибутов этого символа: пробельный символ, буквенный символ, цифровой символ, кавычка строки и символ комментария. У каждого символа может быть ноль или более таких атрибутов.
Кроме того, экземпляр имеет четыре флага. Эти флаги указывают:
- Следует ли возвращать символы конца строки как токены или считать их пробельными символами, которые лишь разделяют токены.
- Следует ли распознавать и пропускать комментарии в стиле C.
- Следует ли распознавать и пропускать комментарии в стиле C++.
- Следует ли преобразовывать символы идентификаторов в нижний регистр.
Типичное приложение сначала создает экземпляр этого класса, настраивает синтаксические таблицы, а затем в цикле многократно вызывает метод nextToken на каждой итерации, пока он не вернет значение TT_EOF.
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
double |
nval |
Если текущий токен является числом, это поле содержит значение этого числа. |
String |
sval |
Если текущий токен является словом, это поле содержит строку с символами этого токена-слова. |
static final int |
TT_EOF |
Константа, указывающая, что достигнут конец потока. |
static final int |
TT_EOL |
Константа, указывающая, что достигнут конец строки. |
static final int |
TT_NUMBER |
Константа, указывающая, что считан токен-число. |
static final int |
TT_WORD |
Константа, указывающая, что считан токен-слово. |
int |
ttype |
После вызова метода nextToken это поле содержит тип только что считанного токена. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
StreamTokenizer |
Устарело. Начиная с JDK версии 1.1, предпочтительный способ токенизации входного потока — преобразовать его в поток символов, например: |
StreamTokenizer |
Создает токенизатор для разбора указанного потока символов. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
commentChar |
Указывает, что символ-аргумент начинает однострочный комментарий. |
void |
eolIsSignificant |
Определяет, считаются ли концы строк токенами. |
int |
lineno() |
Возвращает текущий номер строки. |
void |
lowerCaseMode |
Определяет, преобразуются ли токены-слова автоматически в нижний регистр. |
int |
nextToken() |
Разбирает следующий токен из входного потока этого токенизатора. |
void |
ordinaryChar |
Указывает, что символ-аргумент является «обычным» для этого токенизатора. |
void |
ordinaryChars |
Указывает, что все символы c в диапазоне low <= c <= high являются «обычными» для этого токенизатора. |
void |
parseNumbers() |
Указывает, что этот токенизатор должен разбирать числа. |
void |
pushBack() |
При следующем вызове метода nextToken этого токенизатора возвращается текущее значение поля ttype, а значения полей nval и sval не изменяются. |
void |
quoteChar |
Указывает, что парные символы этого типа ограничивают строковые константы в данном токенизаторе. |
void |
resetSyntax() |
Сбрасывает синтаксическую таблицу этого токенизатора, делая все символы «обычными». |
void |
slashSlashComments |
Определяет, распознает ли токенизатор комментарии в стиле C++. |
void |
slashStarComments |
Определяет, распознает ли токенизатор комментарии в стиле C. |
String |
toString() |
Возвращает строковое представление текущего токена потока и номер строки, в которой он находится. |
void |
whitespaceChars |
Указывает, что все символы c в диапазоне low <= c <= high являются пробельными символами. |
void |
wordChars |
Указывает, что все символы c в диапазоне low <= c <= high являются составляющими слова. |
Подробное описание полей
ttype
public int ttype
nextToken это поле содержит тип только что считанного токена. Для токена из одного символа его значение равно этому символу, преобразованному в целое число. Для токена-строки в кавычках его значение равно символу кавычки. В остальных случаях оно равно одному из следующих значений: -
TT_WORDуказывает, что токен является словом. -
TT_NUMBERуказывает, что токен является числом. -
TT_EOLуказывает, что достигнут конец строки. Поле может иметь это значение только в том случае, если методeolIsSignificantбыл вызван с аргументомtrue. -
TT_EOFуказывает, что достигнут конец входного потока.
Начальное значение этого поля — -4.
- См. также:
TT_EOF
public static final int TT_EOF
- См. также:
TT_EOL
public static final int TT_EOL
- См. также:
TT_NUMBER
public static final int TT_NUMBER
- См. также:
TT_WORD
public static final int TT_WORD
- См. также:
sval
public String sval
Текущий токен является словом, если значение поля ttype равно TT_WORD. Текущий токен является строкой в кавычках, если значение поля ttype равно символу кавычки.
Начальное значение этого поля — null.
- См. также:
nval
public double nval
ttype равно TT_NUMBER. Начальное значение этого поля — 0.0.
- См. также:
Подробное описание конструкторов
StreamTokenizer
@Deprecated public StreamTokenizer(InputStream is)
Reader r = new BufferedReader(new InputStreamReader(is));
StreamTokenizer st = new StreamTokenizer(r);
- Все значения байтов от
'A'до'Z', от'a'до'z'и от'\u00A0'до'\u00FF'считаются буквенными. - Все значения байтов от
'\u0000'до'\u0020'считаются пробельными символами. -
'/'является символом комментария. - Одинарная кавычка
'\''и двойная кавычка'"'являются символами кавычек строки. - Числа разбираются.
- Концы строк считаются пробельными символами, а не отдельными токенами.
- Комментарии в стиле C и C++ не распознаются.
- Параметры:
-
is— входной поток. - См. также:
StreamTokenizer
public StreamTokenizer(Reader r)
- Параметры:
-
r— объект Reader, предоставляющий входной поток. - Начиная с версии:
- 1.1
Подробное описание методов
resetSyntax
public void resetSyntax()
ordinaryChar.- См. также:
wordChars
public void wordChars(int low, int hi)
low <= c <= high являются составляющими слова. Токен-слово состоит из составляющего слова, за которым следует ноль или более составляющих слова или числа.- Параметры:
-
low— нижняя граница диапазона. -
hi— верхняя граница диапазона.
whitespaceChars
public void whitespaceChars(int low, int hi)
low <= c <= high являются пробельными. Пробельные символы используются только для разделения токенов во входном потоке. Все остальные настройки атрибутов для символов в указанном диапазоне сбрасываются.
- Параметры:
-
low— нижняя граница диапазона. -
hi— верхняя граница диапазона.
ordinaryChars
public void ordinaryChars(int low, int hi)
low <= c <= high являются «обычными» для этого токенизатора. Дополнительные сведения о том, что означает «обычный» символ, см. в описании метода ordinaryChar.- Параметры:
-
low— нижняя граница диапазона. -
hi— верхняя граница диапазона. - См. также:
ordinaryChar
public void ordinaryChar(int ch)
ttype значение этого символа. Придание символу конца строки статуса «обычного» может помешать объекту StreamTokenizer подсчитывать строки. Метод lineno может перестать учитывать такие символы конца строки при подсчете.
- Параметры:
-
ch— символ. - См. также:
commentChar
public void commentChar(int ch)
Все остальные настройки атрибутов для указанного символа сбрасываются.
- Параметры:
-
ch— символ.
quoteChar
public void quoteChar(int ch)
Когда метод nextToken встречает строковую константу, поле ttype получает значение символа-разделителя строки, а поле sval — значение тела строки.
Если встречается символ кавычки строки, распознается строка, состоящая из всех символов после (но не включая) символ кавычки и до следующего вхождения того же символа кавычки, символа конца строки или конца файла. При разборе строки распознаются и преобразуются в одиночные символы обычные escape-последовательности, такие как "\n" и "\t".
Все остальные настройки атрибутов для указанного символа сбрасываются.
- Параметры:
-
ch— символ. - См. также:
parseNumbers
public void parseNumbers()
0 1 2 3 4 5 6 7 8 9 . -
назначается атрибут «цифровой».
Когда анализатор встречает токен-слово, соответствующий формату числа с плавающей точкой двойной точности, он рассматривает этот токен как число, а не как слово: присваивает полю ttype значение TT_NUMBER и помещает числовое значение токена в поле nval.
- См. также:
eolIsSignificant
public void eolIsSignificant(boolean flag)
nextToken возвращает TT_EOL и также присваивает полю ttype это значение при считывании конца строки. Строка представляет собой последовательность символов, заканчивающуюся символом возврата каретки ('\r') или символом новой строки ('\n'). Кроме того, символ возврата каретки, за которым непосредственно следует символ новой строки, рассматривается как единый токен конца строки.
Если flag равно false, символы конца строки считаются пробельными и служат только для разделения токенов.
- Параметры:
-
flag—trueуказывает, что символы конца строки являются отдельными токенами;falseуказывает, что символы конца строки являются пробельными. - См. также:
slashStarComments
public void slashStarComments(boolean flag)
true, этот токенизатор потока распознает комментарии в стиле C. Весь текст между последовательными вхождениями /* и */ отбрасывается. Если аргумент-флаг равен false, комментарии в стиле C не обрабатываются особым образом.
- Параметры:
-
flag—trueуказывает на необходимость распознавать и игнорировать комментарии в стиле C.
slashSlashComments
public void slashSlashComments(boolean flag)
true, этот токенизатор потока распознает комментарии в стиле C++. Любое вхождение двух последовательных символов косой черты ('/') считается началом комментария, продолжающегося до конца строки. Если аргумент-флаг равен false, комментарии в стиле C++ не обрабатываются особым образом.
- Параметры:
-
flag—trueуказывает на необходимость распознавать и игнорировать комментарии в стиле C++.
lowerCaseMode
public void lowerCaseMode(boolean fl)
true, значение поля sval преобразуется в нижний регистр всякий раз, когда метод nextToken этого токенизатора возвращает токен-слово (поле ttype имеет значение TT_WORD). Если аргумент-флаг равен false, поле sval не изменяется.
- Параметры:
-
fl—trueуказывает, что все токены-слова следует преобразовывать в нижний регистр. - См. также:
nextToken
public int nextToken() throws IOException
ttype. Дополнительные сведения о токене могут содержаться в поле nval или sval этого токенизатора. Обычно клиенты этого класса сначала настраивают синтаксические таблицы, а затем в цикле вызывают nextToken для разбора последовательных токенов до возвращения TT_EOF.
- Возвращает:
- значение поля
ttype. - Выбрасывает:
-
IOException— если произошла ошибка ввода-вывода. - См. также:
pushBack
public void pushBack()
nextToken этого токенизатора возвращается текущее значение поля ttype, а значения полей nval и sval не изменяются.- См. также:
lineno
public int lineno()
- Возвращает:
- текущий номер строки этого токенизатора потока.
toString
public String toString()
Точная строка, возвращаемая методом, не определена, однако следующий пример можно считать типичным:
Token['a'], line 10
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/StreamTokenizer.html