以下C语句中的标记数。
printf("i = %d, &i = %x", i, &i);
我认为这里有12个令牌。但我的回答是错误的。
有人能告诉我如何在上述C语句中找到令牌吗?
PS:我知道令牌是源程序文本,编译器不会将其分解为组件元素。
答案 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个令牌。