全パッケージ  クラス階層  このパッケージ  前項目  次項目  インデックス

クラス java.io.StreamTokenizer

java.lang.Object
   |
   +----java.io.StreamTokenizer

public class StreamTokenizer
extends Object
StreamTokenizer クラスは入力ストリームを取ってこれを 「トークン」 に解析し、一度に 1 つのトークンを読めるようにします。解析処理は、様々な状態に設定可能な多くのフラグと 1 つのテーブルで制御します。ストリーム tokenizer は、識別子、数、引用文字列、および各種のコメントスタイルを認識できます。

入力ストリームから読み込まれる各バイトは、'\u0000' から '\u00FF' の範囲の文字と見なされます。この文字値を使って、文字の 5 つの属性を検索します。つまり、空白英字数値引用文字列、およびコメント文字です。各文字は、これらの属性を持たないことも、複数持つこともできます。

さらに、インスタンスには 4 つのフラグがあります。これらのフラグが示す内容は次のとおりです。

一般的なアプリケーションは、最初にこのクラスのインスタンスを構築してから、構文テーブルを設定し、その後で各反復ループ内で nextToken メソッドを呼び出して、値 TT_EOF が返るまでこのループを繰り返します。

参照:
nextToken, TT_EOF

Variable Index

 o nval
現在のトークンが数値の場合、このフィールドにはその数値が入る。
 o sval
現在のトークンがワードトークンの場合、このフィールドにはそのワードトークンの文字を示す文字列が入る。
 o TT_EOF
ストリームの終わりが読み込まれたことを示す定数。
 o TT_EOL
行の終わりが読み込まれたことを示す定数。
 o TT_NUMBER
数値トークンが読み込まれたことを示す定数。
 o TT_WORD
ワードトークンが読み込まれたことを示す定数。
 o ttype
nextToken メソッドを呼び出したあとで、このフィールドには読み込んだばかりのトークンの型が入る。

Constructor Index

 o StreamTokenizer(InputStream)
指定の入力ストリームを解析するストリーム tokenizer を生成する。 推奨されない。
 o StreamTokenizer(Reader)
指定の文字ストリームを解析する tokenizer を生成する。

Method Index

 o commentChar(int)
引数で指定された文字以降は、一行のコメント行であることを指定する。
 o eolIsSignificant(boolean)
行の終わりをトークンとして扱うかどうかを判別する。
 o lineno()
現在の行番号を返す。
 o lowerCaseMode(boolean)
ワードトークンを自動的に小文字にするかどうかを判別する。
 o nextToken()
この tokenizer の入力ストリームの次のトークンを解析する。
 o ordinaryChar(int)
文字引数がこの tokenizer の 「通常」 であることを指定する。
 o ordinaryChars(int, int)
low <= c <= high の範囲内のすべての文字 c が、この tokenizer の 「通常」 であることを指定する。
 o parseNumbers()
この tokenizer で数値を解析するように指定する。
 o pushBack()
この tokenizer の nextToken メソッドの次の呼び出しが、ttype フィールドの現行値を返し、nval または sval フィールド内の値は変更しないようにする。
 o quoteChar(int)
この文字に一致するペアで、この tokenizer の文字列定数を区切るように指定する。
 o resetSyntax()
この tokenizer の構文テーブルをリセットし、すべての文字を 「通常」 にする。通常文字の詳細情報は、ordinaryChar メソッドを参照。
 o slashSlashComments(boolean)
tokenizer が C++ スタイルのコメントを認識するかどうかを判別する。
 o slashStarComments(boolean)
tokenizer が C スタイルのコメントを認識するかどうかを識別する。
 o toString()
現在のストリームトークンの文字列表示を返す。
 o whitespaceChars(int, int)
low <= c <= high の範囲内のすべての文字 c が空白文字であると指定する。
 o wordChars(int, int)
low <= c <= high 範囲内のすべての文字 c が、ワード構成成分であると指定する。

Variables

 o ttype
  public int ttype
nextToken メソッドを呼び出したあとで、このフィールドには読み込まれたばかりのトークンの型が入ります。単一トークンの場合、値は整数に変換された単一文字です。 引用文字列トークンの場合、その値は引用文字です。それ以外のものは、次のどれか 1 つの値になります。

参照:
eolIsSignificant, nextToken, quoteChar, TT_EOF, TT_EOL, TT_NUMBER, TT_WORD
 o TT_EOF
  public static final int TT_EOF
ストリームの終わりが読み込まれたことを示す定数です。

 o TT_EOL
  public static final int TT_EOL
行の終わりが読み込まれたことを示す定数です。

 o TT_NUMBER
  public static final int TT_NUMBER
数値トークンが読み込まれたことを示す定数です。

 o TT_WORD
  public static final int TT_WORD
ワードトークンが読み込まれたことを示す定数です。

 o sval
  public String sval
現在のトークンがワードトークンの場合、このフィールドには、ワードトークンの文字を示す文字列が入ります。現在のトークンが引用文字列トークンの場合、このフィールドには、文字列の本体が入ります。

ttype フィールドの値が TT_WORD のとき、現在のトークンはワードです。ttype フィールドの値が引用文字のとき、現在のトークンは引用文字列トークンです。

参照:
quoteChar, TT_WORD, ttype
 o nval
  public double nval
現在のトークンが数値の場合、このフィールドにはその数値が入ります。ttypeフィールドが TT_NUMBER のとき、現在のトークンは数値です。

参照:
TT_NUMBER, ttype

Constructors

 o StreamTokenizer
  public StreamTokenizer(InputStream is)
注意: StreamTokenizer() は推奨されません。 JDK バージョン 1.1 については、入力ストリームをトークン化する好ましい方法は、これを次のように文字ストリームに変換することです。
   Reader r = new BufferedReader(new InputStreamReader(is));
   StreamTokenizer st = new StreamTokenizer(r);
 

指定の入力ストリームを解析するストリーム tokenizer を生成します。ストリーム tokenizer は、次ののデフォルト状態に初期化されます。

パラメータ:
is - 入力ストリーム
参照:
BufferedReader, InputStreamReader, StreamTokenizer
 o StreamTokenizer
  public StreamTokenizer(Reader r)
指定の文字ストリームを解析する tokenizer を生成します。

Methods

 o resetSyntax
  public void resetSyntax()
この tokenizer の構文テーブルをリセットし、すべての文字を 「通常」 にします。通常文字の詳細情報は、ordinaryChar メソッドを参照してください。

参照:
ordinaryChar
 o wordChars
  public void wordChars(int low,
                        int hi)
low <= c <= high の範囲内のすべての 文字 c がワード文字であることを指定します。ワードトークンは、ワード構成成分の後にゼロ個以上のワード構成成分または数値構成成分が続いたものです。

パラメータ:
low - 範囲の最小値
hi - 範囲の最大値
 o whitespaceChars
  public void whitespaceChars(int low,
                              int hi)
low <= c <= high の範囲内のすべての文字 c が、空白文字であると指定します。空白文字の機能は、入力ストリーム内でトークンを区切るだけです。

パラメータ:
low - 範囲の最小値
hi - 範囲の最大値
 o ordinaryChars
  public void ordinaryChars(int low,
                            int hi)
low <= c <= high の範囲内のすべての文字 c が、この tokenizer の 「通常」であると指定します。通常文字の詳細情報は、ordinaryChar メソッドを参照してください。

パラメータ:
low - 範囲の最小値
hi - 範囲の最大値
参照:
ordinaryChar
 o ordinaryChar
  public void ordinaryChar(int ch)
文字引数がこの tokenizer の「通常」であると指定します。コメント文字、ワード構成要素、文字列区切り文字、空白、または数値文字として文字が持つ特殊な意味は取り除かれます。解析プログラムはこのような文字を見つけると、これを単一の文字トークンとして扱い、ttype フィールドに文字の値を設定します。

パラメータ:
ch - 文字
参照:
ttype
 o commentChar
  public void commentChar(int ch)
引数で指定された文字以降は、一行のコメント行であることを指定します。ストリーム tokenizer は、コメント文字から行の終わりまでの間の文字をすべて無視します。

パラメータ:
ch - 文字
 o quoteChar
  public void quoteChar(int ch)
この文字に一致するペアで、この tokenizer の文字列定数を区切るように指定します。

nextToken メソッドが文字列定数を見つけると、ttype フィールドには文字列区切り文字が設定され、sval フィールドには文字列の本体が設定されます。

文字列の引用文字が見つかると、文字列の構成は次のように認識されます。文字列の引用文字 (これは含まない) の後に続くすべての文字、同じ文字列の引用文字の次の出現場所 (これは含まない) までのすべての文字、または行終端子、またはファイルの終わり。通常の ESC シーケンス (例えば "\n""\t" など) は認識され、文字列の解析時に単一文字に変換されます。

パラメータ:
ch - 文字
参照:
nextToken, sval, ttype
 o parseNumbers
  public void parseNumbers()
この tokenizer で数値を解析するように指定します。この tokenizer の構文テーブルは変更され、以下の各 12 の文字:
      0 1 2 3 4 5 6 7 8 9 . -
 

が 「数値」 属性を持ちます。

解析プログラムは、形式が倍精度の浮動小数点数のワードトークンを見つけると、ttype フィールドに値 TT_NUMBER を設定し、トークンの数値を nval フィールドに入れて、このトークンをワードではなく数値として扱います。

参照:
nval, TT_NUMBER, ttype
 o eolIsSignificant
  public void eolIsSignificant(boolean flag)
行の終わりをトークンとして処理するかどうかを判別します。flag 引数が true の場合、この tokenizer は行の終わりをトークンとして処理します。 行の終わりが読み込まれると、nextToken メソッドは TT_EOL を返し、ttype フィールドにこの値を設定します。

行は、復帰文字 ('\r') または改行文字 ('\n') で終わる一連の文字です。また、直後に改行文字が続く復帰文字は、単一の行の終わりトークンとして処理されます。

flag が false の場合、行の終わり文字は空白として扱われ、その機能はトークンを区切るだけです。

パラメータ:
flag - true は、行の終わり文字が独立したトークンであることを示す。false は、行の終わり文字が空白であることを示す。
参照:
nextToken, ttype, TT_EOL
 o slashStarComments
  public void slashStarComments(boolean flag)
tokenizer が C スタイルのコメントを認識するかどうかを判別します。flag 引数が true の場合、このストリーム tokenizer は C スタイルのコメントを認識します。 /**/ の間のテキストはすべて、破棄されます。

flag 引数が false の場合、C スタイルのコメントは特に処理されません。

パラメータ:
flag - true は、C スタイルのコメントを認識して無視することを示す。
 o slashSlashComments
  public void slashSlashComments(boolean flag)
tokenizer が C++ スタイルのコメントを認識するかどうかを判別します。flag 引数が true の場合、このストリーム tokenizer は C++ スタイルのコメントを認識します。スラッシュ文字 ('/') が 2 つ続く場合、これは行の終わりまで続くコメントの始まりを意味します。

flag 引数が false の場合、C++ スタイルのコメントは特に処理されません。

パラメータ:
flag - true は、C++ スタイルのコメントを認識して無視することを示す。
 o lowerCaseMode
  public void lowerCaseMode(boolean fl)
ワードトークンを自動的に小文字にするかどうかを判別します。flag 引数が true の場合、ワードトークンが返されるたびに sval フィールドの値が小文字にされます。ttype フィールドが持つ値 TT_WORD は、この tokenizer の nextToken メソッドからのものです。

flag 引数が false の場合、sval フィールドは変りません。

パラメータ:
fl - true は、すべてのワードトークンを小文字にすることを示す。
参照:
nextToken, ttype, TT_WORD
 o nextToken
  public int nextToken() throws IOException
この tokenizer の入力ストリームの次のトークンを解析します。次のトークンの型は ttype フィールドに返されます。トークンに関する補足情報は、 この tokenizer の nval フィールドまたは sval フィールドにあります。

このクラスの一般的なクライアントは、まず最初に構文テーブルを設定してから nextToken を呼び出すループに入り、TT_EOF が返されるまでトークンを順次解析します。

返り値:
ttype フィールドの値
例外: IOException
I/O エラーが発生した場合
参照:
nval, sval, ttype
 o pushBack
  public void pushBack()
この tokenizer の次の nextToken メソッド呼び出しで ttype フィールドの現行値を返し、nval または sval フィールドの値は変更しないようにします。

参照:
nextToken, nval, sval, ttype
 o lineno
  public int lineno()
現在の行番号を返します。

返り値:
このストリーム tokenizer の現在の行番号
 o toString
  public String toString()
現在のストリームトークンの文字列表示を返します。

返り値:
ttype, nval, および sval フィールドが指定したトークンの文字列表示
オーバーライド:
クラス ObjecttoString
参照:
nval, sval, ttype

全パッケージ  クラス階層  このパッケージ  前項目  次項目  インデックス