Tokenizer
词法分析
基本信息
| 属性 | 值 |
|---|---|
| 路径 | com.github.lunatrius.ingameinfo.parser.text.Tokenizer |
| 行数 | 61 |
| 关联 | TextParser 的 nextToken()(:28-32) |
tokenize(:18-56)
public void tokenize(String str) throws Exception
⚠️ 声明 throws Exception —— 抛出的是
InvalidTokenException 或其它受检异常。
TextParser.load 必须 catch 或声明。
方法把 str 切成 Token 序列并存入内部列表。
nextToken(:58-60)
从列表头取一个并前移指针。
TextParser 的 private Token nextToken()(:28-32)
是它的包装。
状态
| 成员 | 说明 |
|---|---|
| token 列表 | tokenize 的产物 |
| 当前位置 | nextToken 递增 |
⚠️ tokenize 可重复调用,但本类没有 reset 方法 ——
若对同一实例调用两次 tokenize,第二次会追加到已有列表,
指针位置不重置,导致解析从中间开始。
InGameInfoCore 的 setConfigFile(:123)
在每次切到 .txt 配置时都 new TextParser(),所以实际不会复用实例。
注释 / 空白处理
tokenize 的 39 行体(:18-56)里包含跳过逻辑。
由于 Token 的 TokenType 用 EnumSet 定义了
哪些类型是「异常」(EXCEPTIONS,见 Token 条目),
词法器需要区分「该位置有 token」与「该位置是注释/空白」。
相关
- Token - token 类型与正则定义
- TextParser - 唯一调用方
- InvalidTokenException - 抛出的异常
- Location - token 携带的位置