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谢谢,感谢您的帮助。 –