Spec-Zone.ru › OpenJDK 27

Класс StreamTokenizer

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

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

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

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

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

Начиная с:
1.0
См. также:
  • 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()
Вызывает возврат текущего значения поля ttype при следующем вызове метода nextToken этого токенизатора и не изменяет значение поля 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
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли какой-либо другой объект этому объекту.
protected void finalize()
Устарел, подлежит удалению: этот элемент API подлежит удалению в будущей версии.
Финализация устарела и подлежит удалению в будущем выпуске.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает значение хеш-кода этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения определённого периода реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения определённого периода реального времени.

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

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 преобразуется в нижний регистр при каждом возврате токена-слова (поле ttype имеет значение TT_WORD) методом nextToken этого токенизатора.

Если аргумент-флаг имеет значение 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()
Вызывает возврат текущего значения поля ttype при следующем вызове метода nextToken этого токенизатора и не изменяет значение поля 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, 2026, 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.

Spec-Zone.ru

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