Spec-Zone.ru › OpenJDK 25

Класс StreamTokenizer

java.lang.Object
java.io.StreamTokenizer
public class StreamTokenizer extends Object
Класс StreamTokenizer принимает входной поток и разбирает его на «токены», которые можно считывать по одному. Процесс разбора управляется таблицей и рядом флагов, для которых можно задавать различные состояния. Токенизатор потока может распознавать идентификаторы, числа, строки в кавычках и различные стили комментариев.

Каждый байт, считываемый из входного потока, рассматривается как символ в диапазоне от '\u0000' до '\u00FF'. Значение символа используется для поиска пяти возможных атрибутов этого символа: пробельный символ, буквенный символ, цифровой символ, кавычка строки и символ комментария. У каждого символа может быть ноль или более таких атрибутов.

Кроме того, экземпляр имеет четыре флага. Эти флаги указывают:

  • Следует ли возвращать символы конца строки как токены или считать их пробельными символами, которые лишь разделяют токены.
  • Следует ли распознавать и пропускать комментарии в стиле C.
  • Следует ли распознавать и пропускать комментарии в стиле C++.
  • Следует ли преобразовывать символы идентификаторов в нижний регистр.

Типичное приложение сначала создает экземпляр этого класса, настраивает синтаксические таблицы, а затем в цикле многократно вызывает метод nextToken на каждой итерации, пока он не вернет значение TT_EOF.

См. также:
  • 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(InputStream is)
Устарело.
Начиная с JDK версии 1.1, предпочтительный способ токенизации входного потока — преобразовать его в поток символов, например:
    Reader r = new BufferedReader(new InputStreamReader(is));
    StreamTokenizer st = new StreamTokenizer(r);
StreamTokenizer(Reader r)
Создает токенизатор для разбора указанного потока символов.

Краткое описание методов

Модификатор и тип Метод Описание
void commentChar(int ch)
Указывает, что символ-аргумент начинает однострочный комментарий.
void eolIsSignificant(boolean flag)
Определяет, считаются ли концы строк токенами.
int lineno()
Возвращает текущий номер строки.
void lowerCaseMode(boolean fl)
Определяет, преобразуются ли токены-слова автоматически в нижний регистр.
int nextToken()
Разбирает следующий токен из входного потока этого токенизатора.
void ordinaryChar(int ch)
Указывает, что символ-аргумент является «обычным» для этого токенизатора.
void ordinaryChars(int low, int hi)
Указывает, что все символы c в диапазоне low <= c <= high являются «обычными» для этого токенизатора.
void parseNumbers()
Указывает, что этот токенизатор должен разбирать числа.
void pushBack()
При следующем вызове метода nextToken этого токенизатора возвращается текущее значение поля ttype, а значения полей nval и sval не изменяются.
void quoteChar(int ch)
Указывает, что парные символы этого типа ограничивают строковые константы в данном токенизаторе.
void resetSyntax()
Сбрасывает синтаксическую таблицу этого токенизатора, делая все символы «обычными».
void slashSlashComments(boolean flag)
Определяет, распознает ли токенизатор комментарии в стиле C++.
void slashStarComments(boolean flag)
Определяет, распознает ли токенизатор комментарии в стиле C.
String toString()
Возвращает строковое представление текущего токена потока и номер строки, в которой он находится.
void whitespaceChars(int low, int hi)
Указывает, что все символы c в диапазоне low <= c <= high являются пробельными символами.
void wordChars(int low, int hi)
Указывает, что все символы c в диапазоне low <= c <= high являются составляющими слова.

Методы, объявленные в классе Object

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

Подробное описание полей

ttype

public int ttype
После вызова метода nextToken это поле содержит тип только что считанного токена. Для токена из одного символа его значение равно этому символу, преобразованному в целое число. Для токена-строки в кавычках его значение равно символу кавычки. В остальных случаях оно равно одному из следующих значений:
  • TT_WORD указывает, что токен является словом.
  • TT_NUMBER указывает, что токен является числом.
  • TT_EOL указывает, что достигнут конец строки. Поле может иметь это значение только в том случае, если метод eolIsSignificant был вызван с аргументом true.
  • TT_EOF указывает, что достигнут конец входного потока.

Начальное значение этого поля — -4.

См. также:
  • eolIsSignificant(boolean)
  • nextToken()
  • quoteChar(int)
  • TT_EOF
  • TT_EOL
  • TT_NUMBER
  • TT_WORD

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.

См. также:
  • quoteChar(int)
  • TT_WORD
  • ttype

nval

public double nval
Если текущий токен является числом, это поле содержит значение этого числа. Текущий токен является числом, если значение поля ttype равно TT_NUMBER.

Начальное значение этого поля — 0.0.

См. также:
  • TT_NUMBER
  • ttype

Подробное описание конструкторов

StreamTokenizer

@Deprecated public StreamTokenizer(InputStream is)
Устарело.
Начиная с JDK версии 1.1, предпочтительный способ токенизации входного потока — преобразовать его в поток символов, например:
    Reader r = new BufferedReader(new InputStreamReader(is));
    StreamTokenizer st = new StreamTokenizer(r);
Создает токенизатор потока для разбора указанного входного потока. Токенизатор потока инициализируется в следующем состоянии по умолчанию:
  • Все значения байтов от 'A' до 'Z', от 'a' до 'z' и от '\u00A0' до '\u00FF' считаются буквенными.
  • Все значения байтов от '\u0000' до '\u0020' считаются пробельными символами.
  • '/' является символом комментария.
  • Одинарная кавычка '\'' и двойная кавычка '"' являются символами кавычек строки.
  • Числа разбираются.
  • Концы строк считаются пробельными символами, а не отдельными токенами.
  • Комментарии в стиле C и C++ не распознаются.
Параметры:
is — входной поток.
См. также:
  • BufferedReader
  • InputStreamReader
  • StreamTokenizer(java.io.Reader)

StreamTokenizer

public StreamTokenizer(Reader r)
Создает токенизатор для разбора указанного потока символов.
Параметры:
r — объект Reader, предоставляющий входной поток.
Начиная с версии:
1.1

Подробное описание методов

resetSyntax

public void resetSyntax()
Сбрасывает синтаксическую таблицу этого токенизатора, делая все символы «обычными». Дополнительные сведения о том, что означает «обычный» символ, см. в описании метода ordinaryChar.
См. также:
  • ordinaryChar(int)

wordChars

public void wordChars(int low, int hi)
Указывает, что все символы c в диапазоне low <= c <= high являются составляющими слова. Токен-слово состоит из составляющего слова, за которым следует ноль или более составляющих слова или числа.
Параметры:
low — нижняя граница диапазона.
hi — верхняя граница диапазона.

whitespaceChars

public void whitespaceChars(int low, int hi)
Указывает, что все символы c в диапазоне low <= c <= high являются пробельными. Пробельные символы используются только для разделения токенов во входном потоке.

Все остальные настройки атрибутов для символов в указанном диапазоне сбрасываются.

Параметры:
low — нижняя граница диапазона.
hi — верхняя граница диапазона.

ordinaryChars

public void ordinaryChars(int low, int hi)
Указывает, что все символы c в диапазоне low <= c <= high являются «обычными» для этого токенизатора. Дополнительные сведения о том, что означает «обычный» символ, см. в описании метода ordinaryChar.
Параметры:
low — нижняя граница диапазона.
hi — верхняя граница диапазона.
См. также:
  • ordinaryChar(int)

ordinaryChar

public void ordinaryChar(int ch)
Указывает, что символ-аргумент является «обычным» для этого токенизатора. При этом устраняется любое особое значение символа как символа комментария, составляющей слова, разделителя строки, пробельного или цифрового символа. Когда анализатор встречает такой символ, он обрабатывает его как односимвольный токен и присваивает полю ttype значение этого символа.

Придание символу конца строки статуса «обычного» может помешать объекту StreamTokenizer подсчитывать строки. Метод lineno может перестать учитывать такие символы конца строки при подсчете.

Параметры:
ch — символ.
См. также:
  • ttype

commentChar

public void commentChar(int ch)
Указывает, что символ-аргумент начинает однострочный комментарий. Все символы от символа комментария до конца строки игнорируются этим токенизатором потока.

Все остальные настройки атрибутов для указанного символа сбрасываются.

Параметры:
ch — символ.

quoteChar

public void quoteChar(int ch)
Указывает, что парные символы этого типа ограничивают строковые константы в данном токенизаторе.

Когда метод nextToken встречает строковую константу, поле ttype получает значение символа-разделителя строки, а поле sval — значение тела строки.

Если встречается символ кавычки строки, распознается строка, состоящая из всех символов после (но не включая) символ кавычки и до следующего вхождения того же символа кавычки, символа конца строки или конца файла. При разборе строки распознаются и преобразуются в одиночные символы обычные escape-последовательности, такие как "\n" и "\t".

Все остальные настройки атрибутов для указанного символа сбрасываются.

Параметры:
ch — символ.
См. также:
  • nextToken()
  • sval
  • ttype

parseNumbers

public void parseNumbers()
Указывает, что этот токенизатор должен разбирать числа. Синтаксическая таблица токенизатора изменяется таким образом, что каждому из следующих двенадцати символов:
    0 1 2 3 4 5 6 7 8 9 . -

назначается атрибут «цифровой».

Когда анализатор встречает токен-слово, соответствующий формату числа с плавающей точкой двойной точности, он рассматривает этот токен как число, а не как слово: присваивает полю ttype значение TT_NUMBER и помещает числовое значение токена в поле nval.

См. также:
  • nval
  • TT_NUMBER
  • ttype

eolIsSignificant

public void eolIsSignificant(boolean flag)
Определяет, считаются ли концы строк токенами. Если аргумент-флаг равен true, этот токенизатор рассматривает концы строк как токены; метод nextToken возвращает TT_EOL и также присваивает полю ttype это значение при считывании конца строки.

Строка представляет собой последовательность символов, заканчивающуюся символом возврата каретки ('\r') или символом новой строки ('\n'). Кроме того, символ возврата каретки, за которым непосредственно следует символ новой строки, рассматривается как единый токен конца строки.

Если flag равно false, символы конца строки считаются пробельными и служат только для разделения токенов.

Параметры:
flag — true указывает, что символы конца строки являются отдельными токенами; false указывает, что символы конца строки являются пробельными.
См. также:
  • nextToken()
  • ttype
  • TT_EOL

slashStarComments

public void slashStarComments(boolean flag)
Определяет, распознает ли токенизатор комментарии в стиле C. Если аргумент-флаг равен true, этот токенизатор потока распознает комментарии в стиле C. Весь текст между последовательными вхождениями /* и */ отбрасывается.

Если аргумент-флаг равен false, комментарии в стиле C не обрабатываются особым образом.

Параметры:
flag — true указывает на необходимость распознавать и игнорировать комментарии в стиле C.

slashSlashComments

public void slashSlashComments(boolean flag)
Определяет, распознает ли токенизатор комментарии в стиле C++. Если аргумент-флаг равен true, этот токенизатор потока распознает комментарии в стиле C++. Любое вхождение двух последовательных символов косой черты ('/') считается началом комментария, продолжающегося до конца строки.

Если аргумент-флаг равен false, комментарии в стиле C++ не обрабатываются особым образом.

Параметры:
flag — true указывает на необходимость распознавать и игнорировать комментарии в стиле C++.

lowerCaseMode

public void lowerCaseMode(boolean fl)
Определяет, преобразуются ли токены-слова автоматически в нижний регистр. Если аргумент-флаг равен true, значение поля sval преобразуется в нижний регистр всякий раз, когда метод nextToken этого токенизатора возвращает токен-слово (поле ttype имеет значение TT_WORD).

Если аргумент-флаг равен false, поле sval не изменяется.

Параметры:
fl — true указывает, что все токены-слова следует преобразовывать в нижний регистр.
См. также:
  • nextToken()
  • ttype
  • TT_WORD

nextToken

public int nextToken() throws IOException
Разбирает следующий токен из входного потока этого токенизатора. Тип следующего токена возвращается в поле ttype. Дополнительные сведения о токене могут содержаться в поле nval или sval этого токенизатора.

Обычно клиенты этого класса сначала настраивают синтаксические таблицы, а затем в цикле вызывают nextToken для разбора последовательных токенов до возвращения TT_EOF.

Возвращает:
значение поля ttype.
Выбрасывает:
IOException — если произошла ошибка ввода-вывода.
См. также:
  • nval
  • sval
  • ttype

pushBack

public void pushBack()
При следующем вызове метода nextToken этого токенизатора возвращается текущее значение поля ttype, а значения полей nval и sval не изменяются.
См. также:
  • nextToken()
  • nval
  • sval
  • ttype

lineno

public int lineno()
Возвращает текущий номер строки.
Возвращает:
текущий номер строки этого токенизатора потока.

toString

public String toString()
Возвращает строковое представление текущего токена потока и номер строки, в которой он находится.

Точная строка, возвращаемая методом, не определена, однако следующий пример можно считать типичным:

        Token['a'], line 10
Переопределяет:
toString в классе Object
Возвращает:
строковое представление токена
См. также:
  • nval
  • sval
  • ttype

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее дочерних компаний в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API