以下C语句中的token数量。
printf("i = %d, &i = %x", i, &i);
我想这里有 12 个代币。但我的答案是错误的。
谁能告诉我如何找到上述 C 语句中的标记?
PS:我知道标记是编译器不会分解为组件元素的源程序文本。
据我了解的C代码解析,标记是(总共10个):
printf
(
"i = %d, &i = %x"
,
i
,
&
i
)
;
我不计算空格,它通常没有意义,仅用作其他标记之间的分隔符,并且我不会将字符串文字分解成多个部分,因为它是它自己的一个完整实体。
这看起来非常像学校作业或其他东西,但取决于空格是否计数:10或12(或13,如果空格计数并且有结尾换行符)
'printf' '(' '"i = %d, &i = %x"' ',' 'i' ',' '&' 'i' ')' ';'
1 2 3 4 5 6 7 8 9 10
是的,总共10个token。因为引号中表示的字符可以被词法分析器(LA)视为单个token。这是LA的属性。
评论不计为代币。 空格、换行符、制表符也不计为标记。 所以,肯定有 10 个代币。
字符串“abc abc”计为 1