2015-07-04 24 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语言派生的语言中,它解析得很好,并且如上所述进行操作。

总之:根据语言的不同,它可能是一个语法或语义错误。它从来不是一个词汇错误(除非我们正在谈论一个没有标识符的语言的非常不寻常的情况,或者标识符不包含字母)。

相关问题