Compiler errors 词法分析器将5abc识别为什么样的标记?还是一个错误?

Compiler errors 词法分析器将5abc识别为什么样的标记?还是一个错误?,compiler-errors,compiler-construction,lexical-analysis,Compiler Errors,Compiler Construction,Lexical Analysis,5abc是否被识别为令牌? 如果是,您会将其归入哪一类 如果没有,那么谁在识别这个错误词汇或语法分析器? 请解释。您的问题不清楚,但您似乎正在编写自己的编译器/词法分析器,并询问处理此错误的最佳方法是什么。您可能会问现有编译器如何处理这种情况,但这很容易找到。只需编译它: int main() { int a,b,c; 5abc=20; } 没有正确的答案;您可以将其设置为词法错误,但随后必须添加词法规则以匹配此特定情况,然后向解析器返回错误标记,这将导致语法错误。或者,您可以

5abc
是否被识别为令牌? 如果是,您会将其归入哪一类

如果没有,那么谁在识别这个错误词汇或语法分析器?
请解释。

您的问题不清楚,但您似乎正在编写自己的编译器/词法分析器,并询问处理此错误的最佳方法是什么。您可能会问现有编译器如何处理这种情况,但这很容易找到。只需编译它:

int main()
{
    int a,b,c;
    5abc=20;
}
没有正确的答案;您可以将其设置为词法错误,但随后必须添加词法规则以匹配此特定情况,然后向解析器返回错误标记,这将导致语法错误。或者,您可以只返回一个数字/整数,后跟一个标识符,这也会产生语法错误。通常,返回所看到的标记并让解析器将其作为语法错误处理更容易。您可以看到,gcc和其他常见编译器就是这样做的,这证实了它是一种实用的选择

$ gcc SO.c
SO.c:4:5: error: invalid suffix "abc" on integer constant