Класс StreamTokenizer
public class StreamTokenizer extends Object
StreamTokenizer принимает входной поток и анализирует его на «токены», позволяя читать токены по одному. Процесс анализа контролируется таблицей и рядом флагов, которые могут быть установлены в различные состояния. Токенизатор потока может распознавать идентификаторы, числа, строки в кавычках и различные стили комментариев. Каждый байт, считанный из входного потока, рассматривается как символ в диапазоне '\u0000' по '\u00FF'. Значение символа используется для поиска пяти возможных атрибутов символа: пробел, буква, цифра, кавычка строки и символ комментария. Каждый символ может иметь ноль или более этих атрибутов.
Кроме того, у экземпляра есть четыре флага. Эти флаги указывают:
- Возвращать ли разделители строк как токены или обрабатывать их как пробелы, которые просто разделяют токены.
- Распознавать и пропускать ли комментарии в стиле C.
- Распознавать и пропускать ли комментарии в стиле C++.
- Преобразовывать ли символы идентификаторов в нижний регистр.
Типичное приложение сначала создаёт экземпляр этого класса, настраивает таблицы синтаксиса, а затем в цикле многократно вызывает метод nextToken в каждом цикле, пока он не вернёт значение TT_EOF.
- С:
- 1.0
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
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 |
Устаревший. Начиная с версии JDK 1.1, предпочтительный способ токенизации входного потока — преобразование его в поток символов, например: |
StreamTokenizer |
Создаёт токенизатор, анализирующий заданный поток символов. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
commentChar |
Указано, что символ-аргумент начинает однострочный комментарий. |
void |
eolIsSignificant |
Определяет, обрабатываются ли концы строк как токены. |
int |
lineno() |
Возвращает текущий номер строки. |
void |
lowerCaseMode |
Определяет, преобразуются ли токены слов автоматически в нижний регистр. |
int |
nextToken() |
Анализирует следующий токен из входного потока этого токенизатора. |
void |
ordinaryChar |
Указано, что символ-аргумент является «обычным» в этом токенизаторе. |
void |
ordinaryChars |
Указано, что все символы c в диапазоне low <= c <= high являются «обычными» в этом токенизаторе. |
void |
parseNumbers() |
Указано, что числа должны анализироваться этим токенизатором. |
void |
pushBack() |
Принуждает следующий вызов метода nextToken этого токенизатора возвращать текущее значение в поле ttype, и не изменять значение в полях nval или sval. |
void |
quoteChar |
Указано, что сопоставленные пары этого символа ограничивают строковые константы в этом токенизаторе. |
void |
resetSyntax() |
Сбрасывает таблицу синтаксиса этого токенизатора, так что все символы являются «обычными». |
void |
slashSlashComments |
Определяет, распознаёт ли токенизатор комментарии в стиле C++. |
void |
slashStarComments |
Определяет, распознаёт ли токенизатор комментарии в стиле C. |
String |
toString() |
Возвращает строковое представление текущего токена потока и номер строки, на котором он встречается. |
void |
whitespaceChars |
Указано, что все символы c в диапазоне low <= c <= high являются символами пробела. |
void |
wordChars |
Указано, что все символы c в диапазоне low <= c <= high являются составляющими слов. |
Подробное описание полей
ttype
public int ttype
nextToken, это поле содержит тип только что прочитанного токена. Для токена из одного символа его значение — этот символ, преобразованный в целое число. Для токена в кавычках его значение — символ кавычек. В противном случае его значение — одно из следующих: -
TT_WORDуказывает, что токен — это слово. -
TT_NUMBERуказывает, что токен — это число. -
TT_EOLуказывает, что прочитан конец строки. Это значение поле может иметь только если методeolIsSignificantбыл вызван с аргументомtrue. -
TT_EOFуказывает, что достигнут конец потока ввода.
Начальное значение этого поля равно -4.
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.
- См. также:
nval
public double nval
ttype равно TT_NUMBER. Начальное значение этого поля — 0.0.
Подробное описание конструкторов
StreamTokenizer
@Deprecated public StreamTokenizer(InputStream is)
Reader r = new BufferedReader(new InputStreamReader(is)); StreamTokenizer st = new StreamTokenizer(r);
- Все байтовые значения
'A'по'Z','a'по'z', и'\u00A0'по'\u00FF'считаются буквенными. - Все байтовые значения
'\u0000'по'\u0020'считаются пробелами. -
'/'является символом комментария. - Одинарная кавычка
'\''и двойная кавычка'"'являются символами кавычек для строк. - Числа разбираются.
- Концы строк обрабатываются как пробелы, а не как отдельные токены.
- Комментарии в стиле C и C++ не распознаются.
- Параметры:
-
is- поток ввода. - См. также:
StreamTokenizer
public StreamTokenizer(Reader r)
- Параметры:
-
r- объект Reader, предоставляющий поток ввода. - С:
- 1.1
Подробное описание методов
resetSyntax
public void resetSyntax()
ordinaryChar для получения дополнительной информации о символе, являющемся обычным.- См. также:
wordChars
public void wordChars(int low, int hi)
low <= c <= high являются составляющими слова. Токен слова состоит из составляющей слова, за которой следуют ноль или более составляющих слова или составляющих числа.- Параметры:
-
low- нижняя граница диапазона. -
hi- верхняя граница диапазона.
whitespaceChars
public void whitespaceChars(int low, int hi)
low <= c <= high являются символами пробелов. Символы пробелов служат только для разделения токенов в потоке ввода. Любые другие атрибуты символов в указанном диапазоне сбрасываются.
- Параметры:
-
low- нижняя граница диапазона. -
hi- верхняя граница диапазона.
ordinaryChars
public void ordinaryChars(int low, int hi)
low <= c <= high являются «обычными» в этом анализаторе. Смотрите метод ordinaryChar для получения дополнительной информации о символе, являющемся обычным.- Параметры:
-
low- нижняя граница диапазона. -
hi- верхняя граница диапазона. - См. также:
ordinaryChar
public void ordinaryChar(int ch)
ttype в значение символа. Превращение символа перевода строки в «обычный» может помешать способности StreamTokenizer подсчитывать строки. Метод lineno больше не будет отражать наличие таких символов перевода строки в своём подсчёте строк.
- Параметры:
-
ch- символ. - См. также:
commentChar
public void commentChar(int ch)
Любые другие атрибуты указанного символа сбрасываются.
- Параметры:
-
ch- символ.
quoteChar
public void quoteChar(int ch)
Когда метод nextToken встречает строковую константу, поле ttype устанавливается в разделитель строки, а поле sval устанавливается в тело строки.
Если встречен символ кавычки, то распознаётся строка, состоящая из всех символов после (но не включая) символа кавычки, до (но не включая) следующей пары этого же символа кавычки или символа конца строки или конца файла. Обычные escape-последовательности, такие как "\n" и "\t", распознаются и преобразуются в отдельные символы по мере разбора строки.
Любые другие атрибуты указанного символа сбрасываются.
- Параметры:
-
ch- символ. - См. также:
parseNumbers
public void parseNumbers()
0 1 2 3 4 5 6 7 8 9 . -
имеет атрибут "числовой".
Когда анализатор встречает токен слова, имеющий формат числа двойной точности с плавающей запятой, он обрабатывает токен как число, а не как слово, установив поле ttype в значение TT_NUMBER и поместив числовое значение токена в поле nval.
eolIsSignificant
public void eolIsSignificant(boolean flag)
nextToken возвращает TT_EOL и также устанавливает поле ttype в это значение при чтении конца строки. Строка — это последовательность символов, заканчивающаяся символом возврата каретки ('\r') или символом новой строки ('\n'). Кроме того, символ возврата каретки, непосредственно за которым следует символ новой строки, обрабатывается как один токен конца строки.
Если flag имеет значение false, символы конца строки обрабатываются как пробелы и служат только для разделения токенов.
- Параметры:
-
flag-trueуказывает, что символы конца строки являются отдельными токенами;falseуказывает, что символы конца строки являются пробелами. - См. также:
slashStarComments
public void slashStarComments(boolean flag)
true, этот токенизатор потока распознаёт комментарии в стиле C. Весь текст между последовательными вхождениями /* и */ отбрасывается. Если флаг-аргумент равен false, комментарии в стиле C не обрабатываются специально.
- Параметры:
-
flag-trueуказывает на распознавание и игнорирование комментариев в стиле C.
slashSlashComments
public void slashSlashComments(boolean flag)
true, этот токенизатор потока распознаёт комментарии в стиле C++. Любое вхождение двух последовательных символов слэша ('/') обрабатывается как начало комментария, который продолжается до конца строки. Если флаг-аргумент равен false, комментарии в стиле C++ не обрабатываются специально.
- Параметры:
-
flag-trueуказывает на распознавание и игнорирование комментариев в стиле C++.
lowerCaseMode
public void lowerCaseMode(boolean fl)
true, значение в поле sval преобразуется в нижний регистр всякий раз, когда возвращается токен слова (поле ttype имеет значение TT_WORD методом nextToken этого токенизатора). Если флаг-аргумент равен false, поле sval не изменяется.
- Параметры:
-
fl-trueуказывает, что все токены слов должны быть преобразованы в нижний регистр. - См. также:
nextToken
public int nextToken() throws IOException
ttype. Дополнительная информация о токене может быть в поле nval или поле sval этого токенизатора. Типичные клиенты этого класса сначала настраивают таблицы синтаксиса, а затем работают в цикле, вызывая nextToken для анализа последовательных токенов до тех пор, пока не будет возвращено TT_EOF.
pushBack
public void pushBack()
nextToken этого токенизатора вернёт текущее значение в поле ttype, и не будет изменять значение в полях nval или sval. - См. также:
lineno
public int lineno()
- Возвращает:
- текущий номер строки этого токенизатора потока.
toString
public String toString()
Точная возвращаемая строка не определена, хотя следующий пример можно считать типичным:
Token['a'], line 10
© 1993, 2021, 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/17/docs/api/java.base/java/io/StreamTokenizer.html