StreamTokenizerクラスは、入力ストリームを引数に取り、それを「トークン」に構文解析し、一度に1つのトークンを読めるようにします。 構文解析処理は、さまざまな状態に設定可能ないくつかのフラグと1つの表によって制御されます。 ストリーム・トークナイザは、識別子、数値、引用文字列、および各種のコメント・スタイルを認識できます。 
 
 入力ストリームから読み込まれる各バイトは、'\u0000'から'\u00FF'の範囲の文字とみなされます。 この文字値を使って、文字の5つの属性、つまり、空白、英字、数値、引用文字列、およびコメント文字を検索します。 各文字は、これらの属性を持たないことも、複数持つこともできます。 
 
さらに、インスタンスには4つのフラグがあります。 これらのフラグが示す内容は次のとおりです。
- 行末記号を、トークンとして返すか、またはトークンを区切るだけの空白文字として扱うかを示す。
- Cスタイルのコメントを認識してスキップするかどうかを示す。
- C++スタイルのコメントを認識してスキップするかどうかを示す。
- 識別子の文字を小文字に変換するかどうかを示す。
 一般的なアプリケーションは、最初にこのクラスのインスタンスを生成してから、構文表を設定し、そのあとでループの各反復内でnextTokenメソッドを呼び出して、値TT_EOFが返されるまでこのループを繰り返します。
- 導入されたバージョン:
- 1.0
- 関連項目:
- 
フィールドのサマリーフィールド修飾子と型フィールド説明double現在のトークンが数値の場合、このフィールドにはその数値が入ります。現在のトークンがワード・トークンの場合、このフィールドには、ワード・トークンの文字を表す文字列が入ります。static final intストリームの終わりが読み込まれたことを示す定数です。static final int行の終わりが読み込まれたことを示す定数です。static final int数値トークンが読み込まれたことを示す定数です。static final intワード・トークンが読み込まれたことを示す定数です。intnextTokenメソッドの呼出しのあと、このフィールドには読み込まれたばかりのトークンの型が入ります。
- 
コンストラクタのサマリーコンストラクタコンストラクタ説明非推奨。JDK Version 1.1以降、入力ストリームをトークン化するには、次のようにして入力ストリームを文字ストリームに変換することが推奨されています。指定された文字ストリームを構文解析するトークナイザを作成します。
- 
メソッドのサマリー修飾子と型メソッド説明voidcommentChar(int ch) 文字引数が単一行コメントを開始することを指定します。voideolIsSignificant(boolean flag) 行の終わりをトークンとして処理するかどうかを判別します。intlineno()現在の行番号を返します。voidlowerCaseMode(boolean fl) ワード・トークンを自動的に小文字にするかどうかを判別します。intこのトークナイザの入力ストリームの次のトークンを構文解析します。voidordinaryChar(int ch) 文字引数がこのトークナイザの「通常」文字であることを指定します。voidordinaryChars(int low, int hi) low <= c <= highの範囲内のすべての文字cが、このトークナイザの「通常」文字であることを指定します。voidこのトークナイザで数値を構文解析するように指定します。voidpushBack()このトークナイザの次のnextTokenメソッド呼出しでttypeフィールドの現行値を返し、nvalまたはsvalフィールドの値は変更しないようにします。voidquoteChar(int ch) この文字に一致するペアで、このトークナイザの文字列定数を区切るように指定します。voidこのトークナイザの構文表をリセットし、すべての文字を「通常」文字にします。voidslashSlashComments(boolean flag) トークナイザがC++スタイルのコメントを認識するかどうかを判別します。voidslashStarComments(boolean flag) トークナイザがCスタイルのコメントを認識するかどうかを判別します。toString()現在のストリーム・トークンの文字列表現と、それが発生する行番号を返します。voidwhitespaceChars(int low, int hi) low <= c <= highの範囲内のすべての文字cが空白文字であることを指定します。voidwordChars(int low, int hi) low <= c <= highの範囲内のすべての文字cがワード構成要素であることを指定します。
- 
フィールド詳細- 
ttypepublic int ttypenextTokenメソッドの呼出しのあと、このフィールドには読み込まれたばかりのトークンの型が入ります。 単一文字トークンの場合、その値は整数に変換された単一文字です。 引用文字列トークンの場合、その値は引用文字です。 それ以外の場合は、次の値のいずれかになります。- TT_WORDは、トークンがワードであることを示す。
- TT_NUMBERは、トークンが数値であることを示す。
- TT_EOLは、行の終わりに達したことを示す。- eolIsSignificantメソッドが引数- trueで呼び出された場合、このフィールドはこの値のみを持つことができる。
- TT_EOFは、入力ストリームの終わりに達したことを示す。
 このフィールドの初期値は -4です。 - 関連項目:
 
- 
TT_EOFpublic static final int TT_EOFストリームの終わりが読み込まれたことを示す定数です。- 関連項目:
 
- 
TT_EOLpublic static final int TT_EOL行の終わりが読み込まれたことを示す定数です。- 関連項目:
 
- 
TT_NUMBERpublic static final int TT_NUMBER数値トークンが読み込まれたことを示す定数です。- 関連項目:
 
- 
TT_WORDpublic static final int TT_WORDワード・トークンが読み込まれたことを示す定数です。- 関連項目:
 
- 
svalpublic String sval現在のトークンがワード・トークンの場合、このフィールドには、ワード・トークンの文字を表す文字列が入ります。 現在のトークンが引用文字列トークンの場合、このフィールドには、文字列の本体が入ります。ttypeフィールドの値がTT_WORDの場合、現在のトークンはワードです。ttypeフィールドの値が引用文字の場合、現在のトークンは引用文字列トークンです。このフィールドの初期値はnullです。 - 関連項目:
 
- 
nvalpublic double nval現在のトークンが数値の場合、このフィールドにはその数値が入ります。ttypeフィールドの値がTT_NUMBERの場合、現在のトークンは数値です。このフィールドの初期値は0.0です。 - 関連項目:
 
 
- 
- 
コンストラクタの詳細- 
StreamTokenizer@Deprecated public StreamTokenizer(InputStream is) 非推奨。JDK Version 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- 入力ストリーム。
- 関連項目:
 
- バイト値(
- 
StreamTokenizerpublic StreamTokenizer(Reader r) 指定された文字ストリームを構文解析するトークナイザを作成します。- パラメータ:
- r- 入力ストリームを提供するReaderオブジェクト。
- 導入されたバージョン:
- 1.1
 
 
- 
- 
メソッドの詳細- 
resetSyntaxpublic void resetSyntax()このトークナイザの構文表をリセットし、すべての文字を「通常」文字にします。 通常文字の詳細は、ordinaryCharメソッドを参照してください。- 関連項目:
 
- 
wordCharspublic void wordChars(int low, int hi) low <= c <= highの範囲内のすべての文字cがワード構成要素であることを指定します。 ワード・トークンは、ワード構成要素の後ろにゼロ個以上のワード構成要素または数値構成要素が続いたものです。- パラメータ:
- low- 範囲の最小値。
- hi- 範囲の最大値。
 
- 
whitespaceCharspublic void whitespaceChars(int low, int hi) low <= c <= highの範囲内のすべての文字cが空白文字であることを指定します。 空白文字の機能は、入力ストリーム内でトークンを区切ることだけです。指定された範囲内の文字に対するその他の属性の設定はすべてクリアされます。 - パラメータ:
- low- 範囲の最小値。
- hi- 範囲の最大値。
 
- 
ordinaryCharspublic void ordinaryChars(int low, int hi) low <= c <= highの範囲内のすべての文字cが、このトークナイザの「通常」文字であることを指定します。 通常文字の詳細は、ordinaryCharメソッドを参照してください。- パラメータ:
- low- 範囲の最小値。
- hi- 範囲の最大値。
- 関連項目:
 
- 
ordinaryCharpublic void ordinaryChar(int ch) 文字引数がこのトークナイザの「通常」文字であることを指定します。 コメント文字、ワード構成要素、文字列区切り文字、空白、または数値文字として文字が持つ特殊な意味は取り除かれます。 パーサーは、このような文字を検出すると、これを単一の文字トークンとして扱い、ttypeフィールドに文字の値を設定します。行末記号を「通常」文字にすると、 StreamTokenizerが行をカウントする機能に干渉する可能性があります。linenoメソッドが、行のカウントでそのような行末記号の存在を考慮しなくなることがあります。- パラメータ:
- ch- 文字。
- 関連項目:
 
- 
commentCharpublic void commentChar(int ch) 文字引数が単一行コメントを開始することを指定します。 ストリーム・トークナイザは、コメント文字から行の終わりまでの間の文字をすべて無視します。指定された文字に対するその他の属性の設定はすべてクリアされます。 - パラメータ:
- ch- 文字。
 
- 
quoteCharpublic void quoteChar(int ch) この文字に一致するペアで、このトークナイザの文字列定数を区切るように指定します。nextTokenメソッドが文字列定数を検出すると、ttypeフィールドには文字列区切り文字が設定され、svalフィールドには文字列の本体が設定されます。文字列の引用文字が検出されると、文字列の引用文字(これは含まない)の後ろから、同じ文字列の引用文字の次の出現場所、行末記号、またはファイルの終わり(これらは含まない)までのすべての文字で文字列が構成されていると認識されます。 "\n"や"\t"などの通常のエスケープ・シーケンスは認識され、文字列の構文解析時に単一文字に変換されます。指定された文字に対するその他の属性の設定はすべてクリアされます。 - パラメータ:
- ch- 文字。
- 関連項目:
 
- 
parseNumberspublic void parseNumbers()このトークナイザで数値を構文解析するように指定します。 このトークナイザの構文表が変更されます。0 1 2 3 4 5 6 7 8 9 . -これら12個の各文字が「数値」属性を持つようになります。 パーサーは、倍精度の浮動小数点数の形式のワード・トークンを検出すると、 ttypeフィールドに値TT_NUMBERを設定し、トークンの数値をnvalフィールドに入れて、このトークンをワードではなく数値として扱います。- 関連項目:
 
- 
eolIsSignificantpublic void eolIsSignificant(boolean flag) 行の終わりをトークンとして処理するかどうかを判別します。 flag引数がtrueの場合、このトークナイザは行の終わりをトークンとして処理します。行の終わりが読み込まれると、nextTokenメソッドはTT_EOLを返し、ttypeフィールドにこの値を設定します。行は、復帰文字( '\r')または改行文字('\n')で終わる文字シーケンスです。 また、直後に改行文字が続く復帰文字は、行末を表す単一のトークンとして扱われます。flagがfalseの場合、行末文字は空白として扱われ、その機能はトークンを区切るだけです。- パラメータ:
- flag-- trueは、行末文字が独立したトークンであることを示す。- falseは、行末文字が空白であることを示す。
- 関連項目:
 
- 
slashStarCommentspublic void slashStarComments(boolean flag) トークナイザがCスタイルのコメントを認識するかどうかを判別します。 flag引数がtrueの場合、このストリーム・トークナイザはCスタイルのコメントを認識します。/*と*/の間のテキストはすべて破棄されます。flag引数が falseの場合、Cスタイルのコメントは特別には扱われません。- パラメータ:
- flag-- trueは、Cスタイルのコメントを認識して無視することを示す。
 
- 
slashSlashCommentspublic void slashSlashComments(boolean flag) トークナイザがC++スタイルのコメントを認識するかどうかを判別します。 flag引数がtrueの場合、このストリーム・トークナイザはC++スタイルのコメントを認識します。 スラッシュ文字('/')が2つ続く場合、これは行の終わりまで続くコメントの始まりを意味します。flag引数が falseの場合、C++スタイルのコメントは特別には扱われません。- パラメータ:
- flag-- trueは、C++スタイルのコメントを認識して無視することを示す。
 
- 
lowerCaseModepublic void lowerCaseMode(boolean fl) ワード・トークンを自動的に小文字にするかどうかを判別します。 flag引数がtrueの場合、ワード・トークンが返されるたびにsvalフィールドの値が小文字にされます。ttypeフィールドが持つ値TT_WORD)は、このトークナイザのnextTokenメソッドからのものです。flag引数が falseの場合、svalフィールドは変更されません。- パラメータ:
- fl-- trueは、すべてのワード・トークンを小文字にすることを示す。
- 関連項目:
 
- 
nextTokenpublic int nextToken() throws IOExceptionこのトークナイザの入力ストリームの次のトークンを構文解析します。 次のトークンの型はttypeフィールドに返されます。 トークンに関する補足情報は、このトークナイザのnvalフィールドまたはsvalフィールドにあります。このクラスの一般的なクライアントは、まず最初に構文表を設定してからnextTokenを呼び出すループに入り、TT_EOFが返されるまでトークンを順次解析します。 - 戻り値:
- ttypeフィールドの値。
- 例外:
- IOException- 入出力エラーが発生した場合。
- 関連項目:
 
- 
pushBackpublic void pushBack()このトークナイザの次のnextTokenメソッド呼出しでttypeフィールドの現行値を返し、nvalまたはsvalフィールドの値は変更しないようにします。- 関連項目:
 
- 
linenopublic int lineno()現在の行番号を返します。- 戻り値:
- このストリーム・トークナイザの現在の行番号。
 
- 
toString
 
-