Spec-Zone.ru › OpenJDK 21

Класс 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 устанавливается в содержимое строки.

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

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

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

parseNumbers

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

имеет атрибут "numeric".

Когда парсер встречает токен слова, имеющий формат числа двойной точности с плавающей запятой, он обрабатывает токен как число, а не слово, установив поле 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()
Принуждает следующий вызов метода 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, 2023, 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/21/docs/api/java.base/java/io/StreamTokenizer.html

Spec-Zone.ru

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