Spec-Zone.ru › OpenJDK 8

Класс StreamTokenizer

  • java.lang.Object
    • java.io.StreamTokenizer

public class StreamTokenizer
extends Object

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

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

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

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

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

Since:
JDK1.0
См. также:
nextToken(), TT_EOF

Поля

Модификатор и тип Поле и описание
double nval

Если текущий токен — число, это поле содержит значение этого числа.

String sval

Если текущий токен — токен слова, это поле содержит строку, содержащую символы токена слова.

static int TT_EOF

Константа, указывающая, что конец потока был прочитан.

static int TT_EOL

Константа, указывающая, что конец строки был прочитан.

static int TT_NUMBER

Константа, указывающая, что был прочитан токен числа.

static 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()

Сбрасывает таблицу синтаксиса этого токенизатора так, что все символы являются «обычными». См. метод ordinaryChar для получения дополнительной информации о символе, являющемся обычным.

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, предоставляющий входной поток.
С:
JDK1.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 в значение символа.

Преобразование символа разделителя строк в "обычный" может помешать подсчету строк токенизатором. Метод 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()

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