JavaTM Platform
Standard Ed. 6

java.io
クラス StreamTokenizer

java.lang.Object
  上位を拡張 java.io.StreamTokenizer

public class StreamTokenizer
extends Object

StreamTokenizer クラスは、入力ストリームを引数に取り、それを「トークン」に構文解析し、一度に 1 つのトークンを読めるようにします。構文解析処理は、さまざまな状態に設定可能ないくつかのフラグと 1 つのテーブルによって制御されます。ストリームトークナイザは、識別子、数値、引用文字列、および各種のコメントスタイルを認識できます。

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

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

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

導入されたバージョン:
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)
          引数で指定された文字以降は、1 行のコメント行であることを指定します。
 void eolIsSignificant(boolean flag)
          行の終わりをトークンとして処理するかどうかを判別します。
 int lineno()
          現在の行番号を返します。
 void lowerCaseMode(boolean fl)
          ワードトークンを自動的に小文字にするかどうかを判別します。
 int nextToken()
          このトークナイザの入力ストリームの次のトークンを構文解析します。
 void ordinaryChar(int ch)
          文字引数がこのトークナイザの「通常」文字であることを指定します。
 void ordinaryChars(int low, int hi)
          low <= c <= high の範囲内のすべての文字 c が、このトークナイザの「通常」文字であることを指定します。
 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)
          low <= c <= high の範囲内のすべての文字 c が空白文字であることを指定します。
 void wordChars(int low, int hi)
          low <= c <= high の範囲内のすべての文字 c がワード構成要素であることを指定します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

ttype

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

このフィールドの初期値は -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);
 

指定された入力ストリームを構文解析するストリームトークナイザを作成します。ストリームトークナイザは、次のデフォルト状態に初期化されます。

パラメータ:
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)
low <= c <= high の範囲内のすべての文字 c がワード構成要素であることを指定します。ワードトークンは、ワード構成要素の後ろにゼロ個以上のワード構成要素または数値構成要素が続いたものです。

パラメータ:
low - 範囲の最小値
hi - 範囲の最大値

whitespaceChars

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

指定された範囲内の文字に対するその他の属性の設定はすべてクリアされます。

パラメータ:
low - 範囲の最小値
hi - 範囲の最大値

ordinaryChars

public void ordinaryChars(int low,
                          int hi)
low <= c <= high の範囲内のすべての文字 c が、このトークナイザの「通常」文字であることを指定します。通常文字の詳細は、ordinaryChar メソッドを参照してください。

パラメータ:
low - 範囲の最小値
hi - 範囲の最大値
関連項目:
ordinaryChar(int)

ordinaryChar

public void ordinaryChar(int ch)
文字引数がこのトークナイザの「通常」文字であることを指定します。コメント文字、ワード構成要素、文字列区切り文字、空白、または数値文字として文字が持つ特殊な意味は取り除かれます。パーサーは、このような文字を検出すると、これを単一の文字トークンとして扱い、ttype フィールドに文字の値を設定します。  

行末記号を「通常」文字にすると、StreamTokenizer が行をカウントする機能に干渉する可能性があります。lineno メソッドが、行のカウントでそのような行末記号の存在を考慮しなくなることがあります。

パラメータ:
ch - 文字
関連項目:
ttype

commentChar

public void commentChar(int ch)
引数で指定された文字以降は、1 行のコメント行であることを指定します。ストリームトークナイザは、コメント文字から行の終わりまでの間の文字をすべて無視します。  

指定された文字に対するその他の属性の設定はすべてクリアされます。

パラメータ:
ch - 文字

quoteChar

public void quoteChar(int ch)
この文字に一致するペアで、このトークナイザの文字列定数を区切るように指定します。

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

文字列の引用文字が検出されると、文字列の引用文字 (これは含まない) の後ろから、同じ文字列の引用文字の次の出現場所、行末記号、またはファイルの終わり (これらは含まない) までのすべての文字で文字列が構成されていると認識されます。"\n""\t" などの通常のエスケープシーケンスは認識され、文字列の構文解析時に単一文字に変換されます。  

指定された文字に対するその他の属性の設定はすべてクリアされます。

パラメータ:
ch - 文字
関連項目:
nextToken(), sval, ttype

parseNumbers

public void parseNumbers()
このトークナイザで数値を構文解析するように指定します。このトークナイザの構文テーブルが変更されます。
      0 1 2 3 4 5 6 7 8 9 . -
 

これら 12 個の各文字が「数値」属性を持つようになります。

パーサーは、倍精度の浮動小数点数の形式のワードトークンを検出すると、ttype フィールドに値 TT_NUMBER を設定し、トークンの数値を nval フィールドに入れて、このトークンをワードではなく数値として扱います。

関連項目:
nval, TT_NUMBER, ttype

eolIsSignificant

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

行は、キャリッジリターン文字 ('\r') または改行文字 ('\n') で終わる文字シーケンスです。また、直後に改行文字が続くキャリッジリターン文字は、行末を表す単一のトークンとして扱われます。

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

パラメータ:
flag - true は、行末文字が独立したトークンであることを示す。false は、行末文字が空白であることを示す
関連項目:
nextToken(), ttype, TT_EOL

slashStarComments

public void slashStarComments(boolean flag)
トークナイザが C スタイルのコメントを認識するかどうかを判別します。flag 引数が true の場合、このストリームトークナイザは C スタイルのコメントを認識します。/**/ の間のテキストはすべて破棄されます。

false 引数が false の場合、C スタイルのコメントは特別には扱われません。

パラメータ:
flag - true は、C スタイルのコメントを認識して無視することを示す

slashSlashComments

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

false 引数が false の場合、C++ スタイルのコメントは特別には扱われません。

パラメータ:
flag - true は、C++ スタイルのコメントを認識して無視することを示す

lowerCaseMode

public void lowerCaseMode(boolean fl)
ワードトークンを自動的に小文字にするかどうかを判別します。flag 引数が true の場合、ワードトークンが返されるたびに sval フィールドの値が小文字にされます。ttype フィールドが持つ値 TT_WORD は、このトークナイザの nextToken メソッドからのものです。

flag 引数が 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

オーバーライド:
クラス Object 内の toString
戻り値:
トークンの文字列表現
関連項目:
nval, sval, ttype

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。