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
- 文字。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
フィールドに入れて、このトークンをワードではなく数値として扱います。
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スタイルのコメントを認識します。/*
と*/
の間のテキストはすべて破棄されます。
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_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()
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.