public static final int TT_WORD = 1;
public static final int TT_NUMBER = 2;
public static final int TT_EOL = 3;
public static final int TT_EOF = 4;
但他们决定变得可爱,并将其定义为:
public static final int TT_WORD = -3;
public static final int TT_NUMBER = -2;
public static final int TT_EOL = 10;
public static final int TT_EOF = -1;
1条答案
按热度按时间qeeaahzv1#
streamtokenizer支持各种EOL。从医院的文件里
eolIsSignificant
方法:确定是否将行尾视为标记。如果flag参数为true,则该标记器将行尾视为标记;nexttoken方法返回tt\u eol,并在读取行尾时将ttype字段设置为此值。
行是以回车符('\r')或换行符('\n')结尾的字符序列。此外,紧跟换行符的回车符被视为单个行尾标记。
如果标志为false,行尾字符将被视为空白,仅用于分隔标记。
换句话说,如果这个标志是真的(你没有提到这个),那么这些文档会说它可以正常工作。如果标志为false,它也可以正常工作:两者都是
\r
以及\n
算作空白,如果“eolissignificant”处于禁用状态,则这些字符与空格没有什么区别。不管您的问题是什么,它与streamtokenizer解析各种换行形式的能力无关。
请注意
TT_EOL
等于\n
完全是巧合。各种各样的TT_
常量只是表示读入了哪种令牌;通常你会认为它的定义是:但他们决定变得可爱,并将其定义为:
谁知道为什么。请注意
10
以及'\n'
是完全相同的数字:它们都是数字10。'\n'
只是一种奇怪的写作方式。可能你的代码
ttype
然后,我不知道,把它写成一个字节,然后一个文本编辑器打开这个文件作为一个纯文本文件来解释10
作为unix风格的行尾。注:孤独者
\r
因为行尾没有出现。最后一个主要的操作系统是macos(在macosx之前)。这个版本在1997年前后——20多年前就不复存在了。