在c语句中计算标记

时间:2012-10-13 13:52:46

标签: c token

以下C语句中的标记数。

printf("i = %d, &i = %x", i, &i);

我认为这里有12个令牌。但我的回答是错误的。

有人能告诉我如何在上述C语句中找到令牌吗?

PS:我知道令牌是源程序文本,编译器不会将其分解为组件元素。

4 个答案:

答案 0 :(得分:9)

据我了解C代码解析,令牌是(总共10个):

printf
(
"i = %d, &i = %x"
,
i
,
&
i
)
;

我不计算空格,它通常没有意义,只能作为其他标记之间的分隔符,我不会将字符串文字分解成碎片,因为它是它自己的完整实体。

答案 1 :(得分:3)

这看起来非常类似于学校作业或其他东西,但取决于空白是否计数:10或12(或13,如果空白计数且有结尾换行符)

'printf' '(' '"i = %d, &i = %x"' ',' 'i' ',' '&' 'i' ')' ';'
  1       2     3                4   5   6   7   8   9  10

答案 2 :(得分:2)

是完全10个令牌。因为用引号表示的字符可以被词法分析器(LA)视为单个令牌。这是洛杉矶的财产。

答案 3 :(得分:0)

注释不算作令牌。 空格,换行符,制表符也不被视为标记。 因此,肯定有10个令牌。