Scan将扫描下一个令牌,并返回令牌位置,令牌及其文字字符串(如果适用)。源端由token.EOF指示。

如果返回的令牌是文字(token.IDENT,Token.INT,Token.FLOAT,Token.IMAG,Token.CHAR,Token.STRING)或token.COMMENT,则文字字符串具有相应的值。

如果返回的令牌是关键字,则文字字符串是关键字。

如果返回的令牌是token.SEMICOLON,则相应的文字字符串是“;”如果源中存在分号,则为\ n,如果由于换行或EOF而插入了分号,则为“ \ n”。

如果返回的令牌是token.ILLEGAL,则文字字符串是有问题的字符。

在所有其他情况下,Scan返回一个空的文字字符串。

为了更宽容的解析,即使遇到语法错误,Scan也会尽可能返回有效的令牌。因此,即使最终的令牌序列不包含非法令牌,客户端也不会假定没有错误发生。相反,它必须检查扫描程序的ErrorCount或错误处理程序的调用次数(如果已安装)。

扫描会将行信息添加到添加到使用Init设置的文件集的文件中。令牌位置相对于该文件,因此相对于文件集。