public class StreamTokenizer extends Object
StreamTokenizer クラスは、入力ストリームを引数に取り、それを「トークン」に構文解析し、一度に 1 つのトークンを読めるようにします。構文解析処理は、さまざまな状態に設定可能ないくつかのフラグと 1 つのテーブルによって制御されます。ストリームトークナイザは、識別子、数値、引用文字列、および各種のコメントスタイルを認識できます。
入力ストリームから読み込まれる各バイトは、'\u0000' から '\u00FF' の範囲の文字とみなされます。この文字値を使って、文字の 5 つの属性、つまり、空白、英字、数値、引用文字列、およびコメント文字を検索します。各文字は、これらの属性を持たないことも、複数持つこともできます。
さらに、インスタンスには 4 つのフラグがあります。これらのフラグが示す内容は次のとおりです。
一般的なアプリケーションは、最初にこのクラスのインスタンスを生成してから、構文テーブルを設定し、そのあとでループの各反復内で nextToken メソッドを呼び出して、値 TT_EOF が返されるまでこのループを繰り返します。
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 Version 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()
このトークナイザの構文テーブルをリセットし、すべての文字を「通常」文字にします。通常文字の詳細は、
ordinaryChar メソッドを参照してください。 |
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 がワード構成要素であることを指定します。 |
public int ttype
nextToken メソッドの呼び出しのあと、このフィールドには読み込まれたばかりのトークンの型が入ります。単一文字トークンの場合、その値は整数に変換された単一文字です。引用文字列トークンの場合、その値は引用文字です。それ以外の場合は、次の値のいずれかになります。
TT_WORD は、トークンがワードであることを示す。
TT_NUMBER は、トークンが数値であることを示す。
TT_EOL は、行の終わりに達したことを示す。eolIsSignificant メソッドが引数 true で呼び出された場合、このフィールドはこの値のみを持つことができる。
TT_EOF は、入力ストリームの終わりに達したことを示す。
このフィールドの初期値は -4 です。
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 フィールドの値が引用文字の場合、現在のトークンは引用文字列トークンです。
このフィールドの初期値は null です。
quoteChar(int), TT_WORD, ttype@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' のバイト値はすべて空白と見なす。
'/' はコメント文字。
'\'' と二重引用符 '"' は文字列の引用文字。
is - 入力ストリーム。BufferedReader、InputStreamReader、StreamTokenizer(java.io.Reader)public StreamTokenizer(Reader r)
r - 入力ストリームを提供する Reader オブジェクト。public void resetSyntax()
ordinaryChar メソッドを参照してください。ordinaryChar(int)public void wordChars(int low,
int hi)
low <= c <= high の範囲内のすべての文字 c がワード構成要素であることを指定します。ワードトークンは、ワード構成要素の後ろにゼロ個以上のワード構成要素または数値構成要素が続いたものです。low - 範囲の最小値。hi - 範囲の最大値。public void whitespaceChars(int low,
int hi)
low <= c <= high の範囲内のすべての文字 c が空白文字であることを指定します。空白文字の機能は、入力ストリーム内でトークンを区切ることだけです。
指定された範囲内の文字に対するその他の属性の設定はすべてクリアーされます。
low - 範囲の最小値。hi - 範囲の最大値。public void ordinaryChars(int low,
int hi)
low <= c <= high の範囲内のすべての文字 c が、このトークナイザの「通常」文字であることを指定します。通常文字の詳細は、ordinaryChar メソッドを参照してください。low - 範囲の最小値。hi - 範囲の最大値。ordinaryChar(int)public void ordinaryChar(int ch)
ttype フィールドに文字の値を設定します。
行末記号を「通常」文字にすると、StreamTokenizer が行をカウントする機能に干渉する可能性があります。lineno メソッドが、行のカウントでそのような行末記号の存在を考慮しなくなることがあります。
ch - 文字。ttypepublic void commentChar(int ch)
指定された文字に対するその他の属性の設定はすべてクリアーされます。
ch - 文字。public void quoteChar(int ch)
nextToken メソッドが文字列定数を検出すると、ttype フィールドには文字列区切り文字が設定され、sval フィールドには文字列の本体が設定されます。
文字列の引用文字が検出されると、文字列の引用文字 (これは含まない) の後ろから、同じ文字列の引用文字の次の出現場所、行末記号、またはファイルの終わり (これらは含まない) までのすべての文字で文字列が構成されていると認識されます。"\n" や "\t" などの通常のエスケープシーケンスは認識され、文字列の構文解析時に単一文字に変換されます。
指定された文字に対するその他の属性の設定はすべてクリアーされます。
ch - 文字。nextToken(), sval, ttypepublic void parseNumbers()
0 1 2 3 4 5 6 7 8 9 . -
これら 12 個の各文字が「数値」属性を持つようになります。
パーサーは、倍精度の浮動小数点数の形式のワードトークンを検出すると、ttype フィールドに値 TT_NUMBER を設定し、トークンの数値を nval フィールドに入れて、このトークンをワードではなく数値として扱います。
public void eolIsSignificant(boolean flag)
nextToken メソッドは TT_EOL を返し、ttype フィールドにこの値を設定します。
行は、復帰文字 ('\r') または改行文字 ('\n') で終わる文字シーケンスです。また、直後に改行文字が続く復帰文字は、行末を表す単一のトークンとして扱われます。
flag が false の場合、行末文字は空白として扱われ、その機能はトークンを区切るだけです。
flag - true は、行末文字が独立したトークンであることを示す。false は、行末文字が空白であることを示す。nextToken(), ttype, TT_EOLpublic void slashStarComments(boolean flag)
true の場合、このストリームトークナイザは C スタイルのコメントを認識します。/* と */ の間のテキストはすべて破棄されます。
flag 引数が falseの場合、C スタイルのコメントは特別には扱われません。
flag - true は、C スタイルのコメントを認識して無視することを示す。public void slashSlashComments(boolean flag)
true の場合、このストリームトークナイザは C++ スタイルのコメントを認識します。スラッシュ文字 ('/') が 2 つ続く場合、これは行の終わりまで続くコメントの始まりを意味します。
flag 引数が falseの場合、C++ スタイルのコメントは特別には扱われません。
flag - true は、C++ スタイルのコメントを認識して無視することを示す。public void lowerCaseMode(boolean fl)
true の場合、ワードトークンが返されるたびに sval フィールドの値が小文字にされます。ttype フィールドが持つ値 TT_WORD は、このトークナイザの nextToken メソッドからのものです。
flag 引数が false の場合、sval フィールドは変更されません。
fl - true は、すべてのワードトークンを小文字にすることを示す。nextToken(), ttype, TT_WORDpublic int nextToken()
throws IOException
ttype フィールドに返されます。トークンに関する補足情報は、このトークナイザの nval フィールドまたは sval フィールドにあります。
このクラスの一般的なクライアントは、まず最初に構文テーブルを設定してから nextToken を呼び出すループに入り、TT_EOF が返されるまでトークンを順次解析します。
ttype フィールドの値。IOException - 入出力エラーが発生した場合。nval, sval, ttypepublic void pushBack()
nextToken メソッド呼び出しで ttype フィールドの現行値を返し、nval または sval フィールドの値は変更しないようにします。nextToken(), nval, sval, ttypepublic int lineno()
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.