|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjava.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_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| 构造方法详细信息 |
|---|
@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 - 字符。ttypepublic void commentChar(int ch)
指定字符的任何其他属性设置均被清除。
ch - 字符。public void quoteChar(int ch)
当 nextToken 方法遇到一个字符串常量时,ttype 字段将被设置为该字符串分隔符,sval 字段被设置为此字符串的正文。
如果遇到字符串引号字符,则将识别一个字符串,该字符串包括字符串引号字符(不包括)到下一个相同的字符串引号字符(不包括)之间、或者到行结束符或文件末尾的所有字符。常规的转义序列(如 "\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,则不特殊对待 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,
ttypepublic void pushBack()
nextToken 方法的下一个调用返回 ttype 字段中的当前值,而不修改 nval 或 sval 字段中的值。
nextToken(),
nval,
sval,
ttypepublic int lineno()
public String toString()
未指定返回的精确字符串,但可以将以下示例视为典型示例:
Token['a'], line 10
Object 中的 toStringnval,
sval,
ttype
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。