StreamTokenizer学习记录

StreamTokenizer

参考:ASCII字符表

​ 字符流的有效字符提取、串化或数值化是本类的目的。white space(空白字符)、alphabetic(字母——英文字母和特定范围字符)、numeric(数值)、string quote(引用字符串)和 comment character(注解字符流)是字符流处理的五个对象主题(这里翻译偏差有处理解对象主题范围)。StreamTokenizer是字符流的加强I/O类,以字符(32bits的int变量存储)为基本单元进行处理。以下表格围绕对象主题的值域、操作目等讨论StreamTokenizer的原理:

对象主题值域(ASCII码 0-255)字符操作目的处理优先级指定或可选、覆盖或兼有
white space0 - 32’ '以及其ASCII码前所有字符掠过指定空白字符1可选且覆盖
alphabetic97-122和65-90和160-255[a-zA-Z]和160-255ASCII和其余十六个平面Unicode字符解析字母串(连续字母的字符)。字符流必须以alphabetic字符开端,可包含numeric字符(ab12是字符串,12ab不是连续的字符串)3可选且兼有
numeric48 - 57和48和45 即[0-9.-][0-9]和’.‘和’-’解析数值。.和.1和1.1和-.和-.1和-1.1的形式都将作为数值处理2指定且兼有
string quote34和39‘"‘和’\’’解析引用字符串,引用字符由双引号或单引号标识,字符串内转义字符将被解析为字符4指定且覆盖
comment character47/略过注释行5指定且覆盖

​ StreamTokenizer类字段很多,源于其功能的多样性和复杂性。以下从功能角度,拆分出五个模块:

  • ctype:character type。ASCII码在五种对象主题的归属
    • CT_WHITESPACE:1,white space
    • CT_DIGIT:2,numeric
    • CT_ALPHA:4,alphabetic
    • CT_QUOTE:8,string quote
    • CT_COMMENT:16,comment character
  • peekc:标记下一个处理的字符或方式。字符流的各个对象主题处理下,可能存在过度提取一个字符的情况,因此需要标记两种情况,以供下次对象主题处理的需要。
    • 过度读取的unicode字符
    • NEED_CHAR:需要提取下一个字符
    • SKIP_LF:line feed - \r,指定过度提取的字符是\r,并告知若next character = '\n’则掠过再读取一次。
  • nval和sval,提取结果。sval:字母串、字符串,String类型;nval:数值,double浮点数。
  • ttype:token type。主要指各种对象主题下处理的成果。其也兼具CT_QUOTE对象主题下的算法功能的变量。
    • TT_EOF:white space主题下读取至文末或主题执行前的文末已探明。
    • TT_EOL:white space主题下搭配eolIsSignificantP或eolIsSignificantP标识的句末中断识别且返回。简单说,句末标识。
    • TT_NOTHING:ttype默认值,表明未执行过字符流识别。其的存在源于部分算法的需求。
    • TT_NUMBER:numeric主题下的正确数值提取的标识。
    • TT_WORD:alphabetic主题下的标识(能进入主题就说明存在字母串)。
    • 其他值:ctype[peekc]=0未标识主题,不纳入任何主题处理和结果赋值;peekc=‘-’,无意义的文本读取,其在numeric主题下明确无意义数值,不纳入结果处理,因此不要意图以’-'开头进入alphabetic主题。
  • 主题执行可选中断策略:通过变量控制特定主题执行策略。
    • eolIsSignificantP:white space主题下,对’\r’或’\n’的判断,是否结束此次主题执行。
    • slashSlashCommentsP:comment character主题执行的//单行注释策略
    • slashStarCommentsP:comment character主题执行的/*多行注释策略
    • forceLower:alphabetic主题下sval赋值的小写化。
    • pushedBack:这个比较特殊,一次性消费品,用于探知最近一次nextToken的ttype结果。

注:comment character由三种,//和/*需要有变量配合,但是’/'其单行注释固有的方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值