|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.io.StreamTokenizer
public class StreamTokenizer
StreamTokenizer
類別獲取輸入串流並將其解析為“標記”,允許一次讀取一個標記。解析過程由一個表和許多可以設置為各種狀態的標誌控制。該串流的標記產生器可以識別標識符、數字、參考的字元串和各種註釋樣式。
從輸入串流讀取的每個位元組都被視為一個字元,範圍在 '\u0000'
到 '\u00FF'
之間。字元值用於尋找該字元的五個可能屬性:空白、字母、數字、字元串引號 和註釋字元。每個字元都可以有零個或多個這樣的屬性。
另外,一個實例還有四個標誌。這些標誌指示:
典型的應用程序首先建構此類別的一個實例,建立一個語法表,然後重複循環,調用該循環的每個迭代中的 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)
指定該字元參數啟動一個單行註釋。 |
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 . -
都具有“數字”屬性。
當解析器遇到具有雙精度浮點數字格式的文字標記時,會將該標記視為數字而不是文字,方法是通過將 ttype
欄位設置為值 TT_NUMBER
,並將該標記的數字值放入 nval
欄位。
nval
,
TT_NUMBER
,
ttype
public void eolIsSignificant(boolean flag)
nextToken
方法返回 TT_EOL
,還將 ttype
欄位設置為此值。
一行是一個字元序列,以回車(Enter)符 ('\r'
) 或者以新行符 ('\n'
) 結尾。另外,回車(Enter)符後面緊跟新行符被視為一個單行末尾標記。
如果此 flag
為 false,行末尾字元被視為空白並僅用作分隔標記。
flag
- 為 true
指示行末尾字元為分隔標記;為 false
指示行末尾字元為空白。nextToken()
,
ttype
,
TT_EOL
public void slashStarComments(boolean flag)
true
,此串流標記產生器識別 C 樣式註釋。後面出現的 /*
和 */
之間的所有文本將被丟棄。
如果此標誌參數為 false
,則不特殊對待 C 樣式註釋。
flag
- 為 true
指示識別並忽略 C 樣式註釋。public void slashSlashComments(boolean flag)
true
,此串流標記產生器識別 C++ 樣式註釋。任何出現的兩個連續斜線字元 ('/'
) 均被視為一個註釋的開始並一直延伸到行的末尾。
如果此標誌參數為 false
,則不特殊對待 C++ 樣式註釋。
flag
- 為 true
指示識別並忽略 C++ 樣式註釋。public void lowerCaseMode(boolean fl)
true
,則在此標記產生器的 nextToken
方法返回文字標記時(ttype
欄位具有值 TT_WORD
),sval
欄位中的值為小寫字母。
如果此標誌參數為 false
,則 sval
欄位未被修改。
fl
- 為 true
指示所有文字標記應為小寫字母。nextToken()
,
ttype
,
TT_WORD
public int nextToken() throws IOException
ttype
欄位中返回。關於該標記的其他資訊可能位於此標記產生器的 nval
欄位或 sval
欄位中。
此類別的典型客戶機首先建立語法表,然後循環調用 nextToken 來解析後續標記,直到返回 TT_EOF。
ttype
欄位的值。
IOException
- 如果發生 I/O 錯誤。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 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。