全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス
java.lang.Object | +----java.io.StreamTokenizer
StreamTokenizer
クラスは入力ストリームを取ってこれを 「トークン」 に解析し、一度に 1 つのトークンを読めるようにします。解析処理は、様々な状態に設定可能な多くのフラグと 1 つのテーブルで制御します。ストリーム tokenizer は、識別子、数、引用文字列、および各種のコメントスタイルを認識できます。
入力ストリームから読み込まれる各バイトは、'\u0000'
から '\u00FF'
の範囲の文字と見なされます。この文字値を使って、文字の 5 つの属性を検索します。つまり、空白、英字、数値、 引用文字列、およびコメント文字です。各文字は、これらの属性を持たないことも、複数持つこともできます。
さらに、インスタンスには 4 つのフラグがあります。これらのフラグが示す内容は次のとおりです。
一般的なアプリケーションは、最初にこのクラスのインスタンスを構築してから、構文テーブルを設定し、その後で各反復ループ内で nextToken
メソッドを呼び出して、値 TT_EOF
が返るまでこのループを繰り返します。
nextToken
メソッドを呼び出したあとで、このフィールドには読み込んだばかりのトークンの型が入る。
low <= c <= high
の範囲内のすべての文字 c が、この tokenizer の 「通常」 であることを指定する。
nextToken
メソッドの次の呼び出しが、ttype
フィールドの現行値を返し、nval
または sval
フィールド内の値は変更しないようにする。
ordinaryChar
メソッドを参照。
low <= c <= high
の範囲内のすべての文字 c が空白文字であると指定する。
low <= c <= high
範囲内のすべての文字 c が、ワード構成成分であると指定する。
public int ttype
nextToken
メソッドを呼び出したあとで、このフィールドには読み込まれたばかりのトークンの型が入ります。単一トークンの場合、値は整数に変換された単一文字です。
引用文字列トークンの場合、その値は引用文字です。それ以外のものは、次のどれか 1 つの値になります。
TT_WORD
は、トークンがワードであることを示す。
TT_NUMBER
は、トークンが数値であることを示す。
TT_EOL
は、行の終わりに達したことを示す。
フィールドにこの値が入るのは、引数 true
を用いて eolIsSignificant
メソッドが呼び出された場合だけである。
TT_EOF
は、入力ストリームの終わりに達したことを示す。
public static final int TT_EOF
public static final int TT_EOL
public static final int TT_NUMBER
public static final int TT_WORD
public String sval
ttype
フィールドの値が TT_WORD
のとき、現在のトークンはワードです。ttype
フィールドの値が引用文字のとき、現在のトークンは引用文字列トークンです。
public double nval
ttype
フィールドが TT_NUMBER
のとき、現在のトークンは数値です。
public StreamTokenizer(InputStream is)
Reader r = new BufferedReader(new InputStreamReader(is)); StreamTokenizer st = new StreamTokenizer(r);
'A'
から 'Z'
、'a'
から 'z'
、および '\u00A0'
から '\u00FF'
のバイト値はすべて英字と見なす。
'\u0000'
から '\u0020'
のバイト値はすべて空白と見なす。
'/'
はコメント文字。
'\''
と二重引用符 '"'
は文字列の引用文字。
public StreamTokenizer(Reader r)
public void resetSyntax()
ordinaryChar
メソッドを参照してください。
public void wordChars(int low, int hi)
low <= c <= high
の範囲内のすべての 文字 c がワード文字であることを指定します。ワードトークンは、ワード構成成分の後にゼロ個以上のワード構成成分または数値構成成分が続いたものです。
public void whitespaceChars(int low, int hi)
low <= c <= high
の範囲内のすべての文字 c が、空白文字であると指定します。空白文字の機能は、入力ストリーム内でトークンを区切るだけです。
public void ordinaryChars(int low, int hi)
low <= c <= high
の範囲内のすべての文字 c が、この tokenizer の 「通常」であると指定します。通常文字の詳細情報は、ordinaryChar
メソッドを参照してください。
public void ordinaryChar(int ch)
ttype
フィールドに文字の値を設定します。
public void commentChar(int ch)
public void quoteChar(int ch)
nextToken
メソッドが文字列定数を見つけると、ttype
フィールドには文字列区切り文字が設定され、sval
フィールドには文字列の本体が設定されます。
文字列の引用文字が見つかると、文字列の構成は次のように認識されます。文字列の引用文字 (これは含まない) の後に続くすべての文字、同じ文字列の引用文字の次の出現場所 (これは含まない) までのすべての文字、または行終端子、またはファイルの終わり。通常の ESC シーケンス (例えば "\n"
や "\t"
など) は認識され、文字列の解析時に単一文字に変換されます。
public void parseNumbers()
0 1 2 3 4 5 6 7 8 9 . -
が 「数値」 属性を持ちます。
解析プログラムは、形式が倍精度の浮動小数点数のワードトークンを見つけると、ttype
フィールドに値 TT_NUMBER
を設定し、トークンの数値を nval
フィールドに入れて、このトークンをワードではなく数値として扱います。
public void eolIsSignificant(boolean flag)
nextToken
メソッドは TT_EOL
を返し、ttype
フィールドにこの値を設定します。
行は、復帰文字 ('\r'
) または改行文字 ('\n'
) で終わる一連の文字です。また、直後に改行文字が続く復帰文字は、単一の行の終わりトークンとして処理されます。
flag
が false の場合、行の終わり文字は空白として扱われ、その機能はトークンを区切るだけです。
true
は、行の終わり文字が独立したトークンであることを示す。false
は、行の終わり文字が空白であることを示す。
public void slashStarComments(boolean flag)
true
の場合、このストリーム tokenizer は C スタイルのコメントを認識します。 /*
と */
の間のテキストはすべて、破棄されます。
flag 引数が false
の場合、C スタイルのコメントは特に処理されません。
true
は、C スタイルのコメントを認識して無視することを示す。
public void slashSlashComments(boolean flag)
true
の場合、このストリーム tokenizer は C++ スタイルのコメントを認識します。スラッシュ文字 ('/'
) が 2 つ続く場合、これは行の終わりまで続くコメントの始まりを意味します。
flag 引数が false
の場合、C++ スタイルのコメントは特に処理されません。
true
は、C++ スタイルのコメントを認識して無視することを示す。
public void lowerCaseMode(boolean fl)
true
の場合、ワードトークンが返されるたびに sval
フィールドの値が小文字にされます。ttype
フィールドが持つ値 TT_WORD
は、この tokenizer の nextToken
メソッドからのものです。
flag 引数が false
の場合、sval
フィールドは変りません。
true
は、すべてのワードトークンを小文字にすることを示す。
public int nextToken() throws IOException
ttype
フィールドに返されます。トークンに関する補足情報は、 この tokenizer の nval
フィールドまたは sval
フィールドにあります。
このクラスの一般的なクライアントは、まず最初に構文テーブルを設定してから nextToken を呼び出すループに入り、TT_EOF が返されるまでトークンを順次解析します。
ttype
フィールドの値
public void pushBack()
nextToken
メソッド呼び出しで ttype
フィールドの現行値を返し、nval
または sval
フィールドの値は変更しないようにします。
public int lineno()
public String toString()
ttype
, nval
, および sval
フィールドが指定したトークンの文字列表示
全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス