白色空间被认为是C语言中的标记吗?

时间:2016-03-04 17:07:21

标签: c parsing whitespace

白色空间是否被认为是C语言中的一种令牌(特别是对C特别感兴趣)? K& R的参考手册对此有点模糊。

1 个答案:

答案 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代币可能含糊不清,但与这些文字一致:

  

有六类令牌:标识符,关键字,常量,   字符串文字,运算符和其他分隔符。空白,水平   和垂直标签,换行表格和评论,如下所述   (除此之外,“白色空间”)被忽略,除非它们分开   令牌。