我在理解编译器阶段中不同错误之间的差异方面遇到了一些麻烦,例如这个程序:
int main()
{
int x = 5;
int x = 6;
}
我的猜测是,这在语义分析阶段会失败,但我不是那么肯定(在词汇分析阶段可能会失败,因为会生成(int x)的重复标记吗?)
感谢您的帮助。
答案 0 :(得分:0)
你是对的,假设你在这里描述的语言是标准的C或C ++,这个程序在词法上和语法上都是正确的,但不是语义上的。
C / C ++不允许重新定义变量 - 这就是语义。如果您的语言允许变量重定义,那么它将是一个语义正确的程序。