Spec-Zone.ru › OpenJDK 24

Класс 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()
Принуждает следующий вызов метода 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 являются составляющими слов.

Методы, объявленные в классе java.lang.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 устанавливается в тело строки.

Если встречается символ кавычек строки, то распознаётся строка, состоящая из всех символов после (но не включая) символа кавычек строки, до (но не включая) следующего вхождения того же самого символа кавычек строки или символа конца строки или конца файла. Обычные последовательности экранирования, такие как "\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 ложно, символы конца строки обрабатываются как пробелы и служат только для разделения токенов.

Параметры:
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()
Приводит к тому, что следующий вызов метода 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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/io/StreamTokenizer.html

Spec-Zone.ru

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