|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.io.StreamTokenizer
public class StreamTokenizer
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_WORD
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
public double nval
ttype
フィールドが TT_NUMBER
の場合、現在のトークンは数値です。
このフィールドの初期値は 0.0 です。
TT_NUMBER
,
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
- 文字ttype
public void commentChar(int ch)
指定された文字に対するその他の属性の設定はすべてクリアされます。
ch
- 文字public void quoteChar(int ch)
nextToken メソッドが文字列定数を検出すると、ttype
フィールドには文字列区切り文字が設定され、sval
フィールドには文字列の本体が設定されます。
文字列の引用文字が検出されると、文字列の引用文字 (これは含まない) の後ろから、同じ文字列の引用文字の次の出現場所、行末記号、またはファイルの終わり (これらは含まない) までのすべての文字で文字列が構成されていると認識されます。"\n"
や "\t"
などの通常のエスケープシーケンスは認識され、文字列の構文解析時に単一文字に変換されます。
指定された文字に対するその他の属性の設定はすべてクリアされます。
ch
- 文字nextToken()
,
sval
,
ttype
public void parseNumbers()
0 1 2 3 4 5 6 7 8 9 . -
これら 12 個の各文字が「数値」属性を持つようになります。
パーサーは、倍精度の浮動小数点数の形式のワードトークンを検出すると、ttype
フィールドに値 TT_NUMBER
を設定し、トークンの数値を nval
フィールドに入れて、このトークンをワードではなく数値として扱います。
nval
,
TT_NUMBER
,
ttype
public void eolIsSignificant(boolean flag)
nextToken
メソッドは TT_EOL
を返し、ttype
フィールドにこの値を設定します。
行は、キャリッジリターン文字 ('\r'
) または改行文字 ('\n'
) で終わる文字シーケンスです。また、直後に改行文字が続くキャリッジリターン文字は、行末を表す単一のトークンとして扱われます。
flag
が false の場合、行末文字は空白として扱われ、その機能はトークンを区切るだけです。
flag
- true
は、行末文字が独立したトークンであることを示す。false
は、行末文字が空白であることを示すnextToken()
,
ttype
,
TT_EOL
public 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
,
ttype
public void pushBack()
nextToken
メソッド呼び出しで ttype
フィールドの現行値を返し、nval
または sval
フィールドの値は変更しないようにします。
nextToken()
,
nval
,
sval
,
ttype
public int lineno()
public String toString()
次の例を一般的なものと考えることはできますが、返される文字列は正確に指定されていません。
Token['a'], line 10
Object
内の toString
nval
,
sval
,
ttype
|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。