新聞中心
StreamTokenizer

java.lang.Object
|---java.io.StreamTokenizer
public class StreamTokenizer
extends ObjectStreamTokenizer 類接受一個輸入流并將其解析為“令牌”,從而允許一次讀取一個令牌。 解析過程由一個表和許多可以設置為各種狀態(tài)的標志控制。 流標記器可以識別標識符、數(shù)字、帶引號的字符串和各種注釋樣式。
從輸入流中讀取的每個字節(jié)都被視為 '\u0000' 到 '\u00FF' 范圍內的一個字符。 字符值用于查找字符的五個可能屬性:空格、字母、數(shù)字、字符串引號和注釋字符。 每個字符可以有零個或多個這些屬性。
此外,一個實例有四個標志。 這些標志表明:
- 行終止符是作為標記返回還是被視為僅分隔標記的空白。
- 是否要識別和跳過 C 樣式的注釋。
- 是否要識別和跳過 C++ 樣式的注釋。
- 標識符的字符是否轉換為小寫。
一個典型的應用程序首先構造這個類的一個實例,設置語法表,然后在循環(huán)的每次迭代中重復循環(huán)調用 nextToken 方法,直到它返回值 TT_EOF。
Since:
JDK1.0
字段摘要
| 修飾符和類型 | 字段 | 描述 |
|---|---|---|
| double | nval | 如果當前標記是數(shù)字,則此字段包含該數(shù)字的值。 |
| String | sval | 如果當前標記是單詞標記,則此字段包含一個字符串,給出單詞標記的字符。 |
| static int | TT_EOF | 一個常量,指示已讀取流的結尾。 |
| static int | TT_EOL | 一個常量,表示已讀取行尾。 |
| static int | TT_NUMBER | 表示已讀取數(shù)字標記的常量。 |
| static int | TT_WORD | 一個常量,表示已讀取單詞標記。 |
| int | ttype | 調用 nextToken 方法后,該字段包含剛剛讀取的令牌的類型。 |
構造函數(shù)摘要
| 構造函數(shù) | 描述 |
|---|---|
| StreamTokenizer(InputStream is) | 已棄用。 從 JDK 版本 1.1 開始,標記輸入流的選擇方法是將其轉換為字符流。 |
| StreamTokenizer(Reader r) | 創(chuàng)建一個解析給定字符流的分詞器。 |
方法總結
| 修飾符和類型 | 方法 | 描述 |
|---|---|---|
| void | commentChar(int ch) | 指定字符參數(shù)開始一個單行注釋。 |
| void | eolIsSignificant(boolean flag) | 確定是否將行尾視為標記。 |
| int | lineno() | 返回當前行號。 |
| void | lowerCaseMode(boolean fl) | 確定單詞標記是否自動小寫。 |
| int | nextToken() | 從此標記器的輸入流中解析下一個標記。 |
| void | ordinaryChar(int ch) | 指定字符參數(shù)在此標記器中是“普通的”。 |
| void | ordinaryChars(int low, int hi) | 指定范圍 low <= c <= high 中的所有字符 c 在此標記器中都是“普通的”。 |
| void | parseNumbers() | 指定應由此標記器解析數(shù)字。 |
| void | pushBack() | 導致對該標記器的 nextToken 方法的下一次調用返回 ttype 字段中的當前值,而不是修改 nval 或 sval 字段中的值。 |
| void | quoteChar(int ch) | 指定此字符的匹配對分隔此標記器中的字符串常量。 |
| void | resetSyntax() | 重置此標記器的語法表,以便所有字符都是“普通的”。 |
| void | slashSlashComments(boolean flag) | 確定標記器是否識別 C++ 樣式的注釋。 |
| void | slashStarComments(boolean flag) | 確定分詞器是否識別 C 風格的注釋。 |
| String | toString() | 返回當前流標記的字符串表示形式和它出現(xiàn)的行號。 |
| 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 |
字段詳細信息
TT_EOF
public static final int TT_EOF
一個常量,指示已讀取流的結尾。
TT_EOL
public static final int TT_EOL
一個常量,表示已讀取行尾。
TT_NUMBER
public static final int TT_NUMBER
表示已讀取數(shù)字標記的常量。
TT_WORD
public static final int TT_WORD
一個常量,表示已讀取單詞標記。
nval
public double nval
如果當前標記是數(shù)字,則此字段包含該數(shù)字的值。 當 ttype 字段的值為 TT_NUMBER 時,當前標記是一個數(shù)字。
該字段的初始值為 0.0。
sval
public String sval
如果當前標記是單詞標記,則此字段包含一個字符串,給出單詞標記的字符。 當前標記是帶引號的字符串標記時,此字段包含字符串的正文。
當 ttype 字段的值為 TT_WORD 時,當前標記是一個單詞。 當 ttype 字段的值是引號字符時,當前標記是帶引號的字符串標記。
該字段的初始值為空。
ttype
public int ttype
調用 nextToken 方法后,該字段包含剛剛讀取的令牌的類型。 對于單個字符標記,其值為單個字符,轉換為整數(shù)。 對于帶引號的字符串標記,其值為引號字符。 否則,其值為以下之一:
- TT_WORD 表示標記是一個詞。
- TT_NUMBER 表示令牌是一個數(shù)字。
- TT_EOL 表示已讀取行尾。 如果使用參數(shù) true 調用了 eolIsSignificant 方法,則該字段只能具有此值。
- TT_EOF 表示已到達輸入流的末尾。
該字段的初始值為-4。
構造函數(shù)詳細信息
StreamTokenizer
@Deprecated public StreamTokenizer(InputStream is)
已棄用。 從 JDK 版本 1.1 開始,標記輸入流的選擇方法是將其轉換為字符流,例如:
Reader r = new BufferedReader(new InputStreamReader(is));
StreamTokenizer st = new StreamTokenizer(r);創(chuàng)建解析指定輸入流的流標記器。 流標記器初始化為以下默認狀態(tài):
- 所有字節(jié)值“A”到“Z”、“a”到“z”和“\u00A0”到“\u00FF”都被認為是字母。
- 所有字節(jié)值 '\u0000' 到 '\u0020' 都被認為是空白。
- '/' 是注釋字符。
- 單引號 ''' 和雙引號 '"' 是字符串引號字符。
- 解析數(shù)字。
- 行尾被視為空白,而不是單獨的標記。
- 無法識別 C 樣式和 C++ 樣式的注釋。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| is | 一個輸入流。 |
StreamTokenizer
public StreamTokenizer(Reader r)
創(chuàng)建一個解析給定字符流的分詞器。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| r | 提供輸入流的 Reader 對象。 |
Since:
JDK1.1
方法詳情
resetSyntax
public void resetSyntax()
重置此標記器的語法表,以便所有字符都是“普通的”。
wordChars
public void wordChars(int low, int hi)
指定 low <= c <= high 范圍內的所有字符 c 都是單詞組成部分。 一個詞標記由一個詞成分組成,后跟零個或多個詞成分或數(shù)字成分。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| low | 范圍的低端。 |
| hi | 范圍的高端。 |
whitespaceChars
public void whitespaceChars(int low, int hi)
指定范圍 low <= c <= high 的所有字符 c 都是空白字符。 空白字符僅用于分隔輸入流中的標記。
指定范圍內字符的任何其他屬性設置都將被清除。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| low | 范圍的低端。 |
| hi | 范圍的高端。 |
ordinaryChars
public void ordinaryChars(int low, int hi)
指定范圍 low <= c <= high 中的所有字符 c 在此標記器中都是“普通的”。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| low | 范圍的低端。 |
| hi | 范圍的高端。 |
ordinaryChar
public void ordinaryChar(int ch)
指定字符參數(shù)在此標記器中是“普通的”。 它刪除了字符作為注釋字符、單詞組件、字符串分隔符、空格或數(shù)字字符的任何特殊意義。 當解析器遇到這樣的字符時,解析器將其視為單字符標記并將 ttype 字段設置為字符值。
將行終止符設置為“普通”可能會干擾 StreamTokenizer 計算行數(shù)的能力。 lineno 方法可能不再在其行數(shù)中反映此類終止符的存在。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| ch | 字符。 |
commentChar
public void commentChar(int ch)
指定字符參數(shù)開始一個單行注釋。 此流標記器忽略從注釋字符到行尾的所有字符。
指定字符的任何其他屬性設置都將被清除。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| ch | 字符。 |
quoteChar
public void quoteChar(int ch)
指定此字符的匹配對分隔此標記器中的字符串常量。
當 nextToken 方法遇到字符串常量時,ttype 字段設置為字符串分隔符,sval 字段設置為字符串正文。
如果遇到字符串引號字符,則識別字符串,該字符串由字符串引號字符之后(但不包括)直到(但不包括)相同字符串引號字符或行終止符的下一次出現(xiàn)為止的所有字符組成 ,或文件結尾。 在解析字符串時,常見的轉義序列(例如“\n”和“\t”)會被識別并轉換為單個字符。
指定字符的任何其他屬性設置都將被清除。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| ch | 字符。 |
parseNumbers
public void parseNumbers()
指定應由此標記器解析數(shù)字。 此標記器的語法表已修改,以便十二個字符中的每一個:
0 1 2 3 4 5 6 7 8 9 . - 具有“數(shù)字”屬性。
當解析器遇到具有雙精度浮點數(shù)格式的單詞標記時,它會將標記視為數(shù)字而不是單詞,方法是將 ttype 字段設置為值 TT_NUMBER 并將標記的數(shù)值放入 nval 字段。
eolIsSignificant
public void eolIsSignificant(boolean flag)
確定是否將行尾視為標記。 如果 flag 參數(shù)為 true,則此標記器將行尾視為標記; nextToken 方法返回 TT_EOL 并在讀取行尾時將 ttype 字段設置為此值。
行是以回車符 ('\r') 或換行符 ('\n') 結尾的字符序列。 此外,緊跟換行符的回車符被視為單個行尾標記。
如果標志為 false,則行尾字符被視為空格并僅用于分隔標記。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| flag | true 表示行尾字符是單獨的標記; false 表示行尾字符是空格。 |
slashStarComments
public void slashStarComments(boolean flag)
確定分詞器是否識別 C 風格的注釋。 如果 flag 參數(shù)為 true,則此流標記器識別 C 樣式注釋。 連續(xù)出現(xiàn) / 和 / 之間的所有文本都將被丟棄。
如果 flag 參數(shù)為 false,則不會對 C 樣式注釋進行特殊處理。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| flag | true 表示識別和忽略 C 風格的注釋。 |
slashSlashComments
public void slashSlashComments(boolean flag)
確定標記器是否識別 C++ 樣式的注釋。 如果 flag 參數(shù)為真,則此流標記器識別 C++ 樣式的注釋。 任何出現(xiàn)的兩個連續(xù)斜杠字符 ('/') 都被視為延伸到行尾的注釋的開頭。
如果 flag 參數(shù)為 false,則不會對 C++ 樣式的注釋進行特殊處理。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| flag | true 表示識別和忽略 C++ 風格的注釋。 |
lowerCaseMode
public void lowerCaseMode(boolean fl)
確定單詞標記是否自動小寫。 如果 flag 參數(shù)為真,則每當返回單詞標記時,sval 字段中的值都會小寫(通過此標記器的 nextToken 方法,ttype 字段的值為 TT_WORD。
如果 flag 參數(shù)為 false,則不修改 sval 字段。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| fl | true 表示所有單詞標記都應該小寫。 |
nextToken
public int nextToken() throws IOException
從此標記器的輸入流中解析下一個標記。 下一個標記的類型在 ttype 字段中返回。 有關令牌的其他信息可能在此標記器的 nval 字段或 sval 字段中。
此類的典型客戶端首先設置語法表,然后坐在循環(huán)中調用 nextToken 來解析連續(xù)的令牌,直到返回 TT_EOF。
返回:
ttype 字段的值。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果發(fā)生 I/O 錯誤。 |
pushBack
public void pushBack()
導致對該標記器的 nextToken 方法的下一次調用返回 ttype 字段中的當前值,而不是修改 nval 或 sval 字段中的值。
lineno
public int lineno()
返回當前行號。
返回:
此流標記器的當前行號。
toString
public String toString()
返回當前流標記的字符串表示形式和它出現(xiàn)的行號。
返回的精確字符串是未指定的,盡管以下示例可以被認為是典型的:
Token['a'], line 10覆蓋:
類 Object 中的 toString
返回:
令牌的字符串表示
新聞名稱:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSStreamTokenizer
網(wǎng)站地址:http://m.5511xx.com/article/djiihho.html


咨詢
建站咨詢
