2015-07-04 23 views
0
nti a, b; 

現在,我已將int替換爲nti。它會不會產生任何詞彙錯誤?以下聲明是否導致詞法分析器錯誤?

而且,如果我使用

Int a, b; 

是它只是一個語法錯誤或者詞法錯誤?

+1

你爲什麼認爲'Int'和'nti'會有不同的表現?編譯器非常簡單:您可以拼寫'int'或者不拼寫。 'Int'和'quusfgl_4531'一樣接近。 – MSalters

回答

0

當然這取決於語言,但是在大多數語言中,ntiInt都是有效的標識符,因此可以通過詞法分析器進行分類。所以沒有詞彙錯誤。

如果語言進一步使用C樣式聲明語法並允許用戶定義的類型,那麼這兩個示例在語法上也可以是有效的。只有在語義分析過程中,你會得到一個錯誤,指出沒有定義名爲ntiInt的類型(當然,除非是,在這種情況下代碼是簡單正確的)。

雖然這是一個例外,但C和C++本身必須在解析時跟蹤定義的類型,並且foo bar;不能正確解析爲聲明,除非foo先前已被聲明爲類型。但是,在其他C語言派生的語言中,它解析得很好,並且如上所述進行操作。

總之:根據語言的不同,它可能是一個語法或語義錯誤。它從來不是一個詞彙錯誤(除非我們正在談論一個沒有標識符的語言的非常不尋常的情況,或者標識符不包含字母)。

相關問題