白色空间是否被认为是C语言中的一种令牌(特别是对C特别感兴趣)? K& R的参考手册对此有点模糊。
答案 0 :(得分:4)
不,空格不会被视为令牌。来自http://c0x.coding-guidelines.com/6.4.html(标准文本草案,遗憾的是实际标准需要花钱并且没有开放链接):
token: keyword identifier constant string-literal punctuator preprocessing-token: header-name identifier pp-number character-constant string-literal punctuator each non-white-space character that cannot be one of the above
GCC does not consider white space tokens:
白色空间分隔令牌;它本身并不是任何形式的象征。 令牌不必由空格分隔,但通常是 避免含糊不清的必要条件。
Visual Studio也没有:
标记由空格字符和其他字符分隔(限制) 令牌,如运营商和标点符号。在解析代码时,C 编译器会忽略空格字符,除非您将它们用作 分隔符或作为字符常量或字符串文字的组成部分。
K& R A2.1代币可能含糊不清,但与这些文字一致:
有六类令牌:标识符,关键字,常量, 字符串文字,运算符和其他分隔符。空白,水平 和垂直标签,换行表格和评论,如下所述 (除此之外,“白色空间”)被忽略,除非它们分开 令牌。