2012-10-13 71 views
5

以下C語句中的令牌數量。在c語句中計算令牌

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

我認爲這裏有12個標記。但我的回答是錯誤的。

有人可以告訴我如何在上面的C語句中找到令牌嗎? PS:我知道一個令牌是編譯器不會分解爲組件元素的源程序文本。

+1

你在那裏看到的12個代幣是什麼? – Mat

+5

我想說有10個''printf''(''「i =%d,&i =%x」'',''''',''&'''''''''' –

+0

那麼,我計數十個令牌。在一定程度上,這取決於保存多少細節以及忽略多少細節。 (可能是您考慮空間標記?)雖然C標準需要對預處理器進行某種解釋,但這不需要影響解析器的其餘部分。 – delnan

回答

9

據我明白C代碼解析,所述令牌(10總數):

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

我不計空白,這是一般意義的和只用作其他標記之間的隔板,而且我不會將字符串文字分解成幾部分,因爲它是它自己的完整實體。

+0

那麼這個語句的詞彙是什麼? –

+0

@rafanadal你在說什麼? –

+0

kk簡單地說是什麼詞位 –

3

這看起來非常像學校裏的功課什麼的,而是取決於是否空白罪狀:10或12(或13,如果空格數並沒有結束行)

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

是完全10個標記。因爲用引號表示的字符可以被詞法分析器(LA)視爲單個標記,這是LA的屬性。