1
我有一些麻煩,在理解了編譯階段不同的錯誤之間的差異,比如這個程序:編譯器的哪個階段檢測到以下錯誤的程序?
int main()
{
int x = 5;
int x = 6;
}
我的猜測是,這將無法在語義分析階段,但我不某些(是否有可能在詞法分析階段失敗,因爲會生成(int x)的重複標記?)
感謝您的幫助。
我有一些麻煩,在理解了編譯階段不同的錯誤之間的差異,比如這個程序:編譯器的哪個階段檢測到以下錯誤的程序?
int main()
{
int x = 5;
int x = 6;
}
我的猜測是,這將無法在語義分析階段,但我不某些(是否有可能在詞法分析階段失敗,因爲會生成(int x)的重複標記?)
感謝您的幫助。
你說得對,這個程序在詞法和句法上都是正確的,但不是語義上的,假設你在這裏描述的語言是標準的C或C++。
C/C++不允許重新定義變量 - 這就是語義。如果你的語言允許變量重定義,它將是一個語義上正確的程序。
在詞法分析階段在符號表中插入會導致碰撞併產生「重複符號」錯誤。 –
@DavidBrabant謝謝,感謝您的幫助。 –