|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||||
java.lang.Object | +--java.io.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 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 |
| フィールドの詳細 |
public int ttype
nextToken メソッドの呼び出しのあと、このフィールドには読み込まれたばかりのトークンの型が入ります。単一文字トークンの場合、その値は整数に変換された単一文字です。引用文字列トークンの場合、その値は引用文字です。それ以外の場合は、次の値のどれかになります。
TT_WORD は、トークンがワードであることを示す
TT_NUMBER は、トークンが数値であることを示す
TT_EOL は、行の終わりに達したことを示す。フィールドにこの値が入るのは、引数に true を指定して eolIsSignificant メソッドが呼び出された場合だけ
TT_EOF は、入力ストリームの終わりに達したことを示す
このフィールドの初期値は -4 です。
eolIsSignificant(boolean),
nextToken(),
quoteChar(int),
TT_EOF,
TT_EOL,
TT_NUMBER,
TT_WORDpublic 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,
ttypepublic double nval
ttype フィールドが TT_NUMBER の場合、現在のトークンは数値です。
このフィールドの初期値は 0.0 です。
TT_NUMBER,
ttype| コンストラクタの詳細 |
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 フィールドに文字の値を設定します。
ch - 文字ttypepublic void commentChar(int ch)
ch - 文字public void quoteChar(int ch)
nextToken メソッドが文字列定数を検出すると、ttype フィールドには文字列区切り文字が設定され、sval フィールドには文字列の本体が設定されます。
文字列の引用文字が検出されると、文字列の構成は次のように認識されます。文字列の引用文字 (これは含まない) の後に続くすべての文字、同じ文字列の引用文字の次の出現場所 (これは含まない) までのすべての文字、または行末記号、またはファイルの終わり。通常の ESC シーケンス (たとえば "\n" や "\t" など) は認識され、文字列の構文解析時に単一文字に変換されます。
ch - 文字nextToken(),
sval,
ttypepublic void parseNumbers()
0 1 2 3 4 5 6 7 8 9 . -
パーサは、倍精度の浮動小数点数の形式のワードトークンを検出すると、ttype フィールドに値 TT_NUMBER を設定し、トークンの数値を nval フィールドに入れて、このトークンをワードではなく数値として扱います。
nval,
TT_NUMBER,
ttypepublic 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 スタイルのコメントを認識します。/* と */ の間のテキストはすべて破棄されます。
false 引数が false の場合、C スタイルのコメントは特別には扱われません。
flag - true は、C スタイルのコメントを認識して無視することを示すpublic void slashSlashComments(boolean flag)
true の場合、このストリームトークナイザは C++ スタイルのコメントを認識します。スラッシュ文字 ('/') が 2 つ続く場合、これは行の終わりまで続くコメントの始まりを意味します。
false 引数が false の場合、C++ スタイルのコメントは特別には扱われません。
flag - true は、C++ スタイルのコメントを認識して無視することを示すpublic void lowerCaseMode(boolean fl)
true の場合、ワードトークンが返されるたびに sval フィールドの値が小文字にされます。ttype フィールドが持つ値 TT_WORD は、このトークナイザの nextToken メソッドからのものです。
flag 引数が false の場合、sval フィールドは変更されません。
fl - true は、すべてのワードトークンを小文字にすることを示すnextToken(),
ttype,
TT_WORD
public 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()
public String toString()
Object 内の toStringttype、nval、および sval フィールドで指定したトークンの文字列表現nval,
sval,
ttype
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||||
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.