2017-07-17 78 views
1

我有一些麻煩,在理解了編譯階段不同的錯誤之間的差異,比如這個程序:編譯器的哪個階段檢測到以下錯誤的程序?

int main() 
{ 
     int x = 5; 
     int x = 6; 
} 

我的猜測是,這將無法在語義分析階段,但我不某些(是否有可能在詞法分析階段失敗,因爲會生成(int x)的重複標記?)

感謝您的幫助。

+1

在詞法分析階段在符號表中插入會導致碰撞併產生「重複符號」錯誤。 –

+0

@DavidBrabant謝謝,感謝您的幫助。 –

回答

0

你說得對,這個程序在詞法和句法上都是正確的,但不是語義上的,假設你在這裏描述的語言是標準的C或C++。

C/C++不允許重新定義變量 - 這就是語義。如果你的語言允許變量重定義,它將是一個語義上正確的程序。