Класс StreamTokenizer
public class StreamTokenizer extends Object
StreamTokenizer принимает входной поток и разбирает его на «токены», позволяя считывать их по одному. Процесс разбора управляется таблицей и рядом флагов, которым можно задавать различные состояния. Токенизатор потока распознаёт идентификаторы, числа, строки в кавычках и различные виды комментариев. Каждый байт, считываемый из входного потока, считается символом в диапазоне от '\u0000' до '\u00FF'. Значение символа используется для поиска пяти возможных атрибутов этого символа: пробельный символ, буквенный символ, цифровой символ, кавычка строки и символ комментария. Каждый символ может иметь ноль или более этих атрибутов.
Кроме того, экземпляр имеет четыре флага. Эти флаги указывают:
- Следует ли возвращать окончания строк в качестве токенов или считать их пробельными символами, которые лишь разделяют токены.
- Следует ли распознавать и пропускать комментарии в стиле C.
- Следует ли распознавать и пропускать комментарии в стиле C++.
- Следует ли преобразовывать символы идентификаторов в нижний регистр.
Типичное приложение сначала создаёт экземпляр этого класса, настраивает таблицы синтаксиса, а затем многократно вызывает метод nextToken в цикле, пока тот не вернёт значение TT_EOF.
- Начиная с:
- 1.0
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
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() |
Вызывает возврат текущего значения поля ttype при следующем вызове метода nextToken этого токенизатора и не изменяет значение поля 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 являются составляющими слов. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли какой-либо другой объект этому объекту. |
protected void |
finalize() |
Устарел, подлежит удалению: этот элемент API подлежит удалению в будущей версии. Финализация устарела и подлежит удалению в будущем выпуске. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает значение хеш-кода этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения определённого периода реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения определённого периода реального времени. |
Подробное описание полей
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 преобразуется в нижний регистр при каждом возврате токена-слова (поле ttype имеет значение TT_WORD) методом nextToken этого токенизатора. Если аргумент-флаг имеет значение false, поле sval не изменяется.
- Параметры:
-
fl—trueуказывает, что все токены-слова нужно преобразовывать в нижний регистр. - См. также:
nextToken
public int nextToken() throws IOException
ttype. Дополнительные сведения о токене могут содержаться в поле nval или sval этого токенизатора. Типичные клиенты этого класса сначала настраивают таблицы синтаксиса, а затем в цикле вызывают nextToken для разбора последовательных токенов, пока не будет возвращено TT_EOF.
- Возвращает:
- значение поля
ttype. - Выбрасывает:
-
IOException— если возникает ошибка ввода-вывода. - См. также:
pushBack
public void pushBack()
ttype при следующем вызове метода nextToken этого токенизатора и не изменяет значение поля 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.