在c语句中计算token

问题描述 投票:0回答:5

以下C语句中的token数量。

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

我想这里有 12 个代币。但我的答案是错误的。

谁能告诉我如何找到上述 C 语句中的标记?

PS:我知道标记是编译器不会分解为组件元素的源程序文本。

c token
5个回答
10
投票

据我了解的C代码解析,标记是(总共10个):

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

我不计算空格,它通常没有意义,仅用作其他标记之间的分隔符,并且我不会将字符串文字分解成多个部分,因为它是它自己的一个完整实体。


4
投票

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

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

3
投票

是的,总共10个token。因为引号中表示的字符可以被词法分析器(LA)视为单个token。这是LA的属性。


1
投票

评论不计为代币。 空格、换行符、制表符也不计为标记。 所以,肯定有 10 个代币。


0
投票

字符串“abc abc”计为 1

© www.soinside.com 2019 - 2024. All rights reserved.