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