int main()
{
int a,b,c;
5abc=20;
}
5abc
被识别为令牌吗?
如果是,那么你会把它放在哪个类别?
如果否,则表示谁正在识别Lexical或Syntax分析器的错误? 请解释一下。
答案 0 :(得分:2)
您的问题不明确,但似乎您正在编写自己的编译器/词法分析器,并询问它是处理此错误的最佳方法。您可能一直在询问现有编译器如何处理这种情况,但这很容易找到。只需编译它:
$ gcc SO.c
SO.c:4:5: error: invalid suffix "abc" on integer constant
没有正确答案;你可以使它成为一个词法错误,但是你必须添加一个词法规则来匹配这个特定的情况,然后将一个错误令牌返回给解析器,这会导致语法错误。或者,您可以返回一个数字/整数,后跟一个标识符,这也会产生语法错误。通常,返回看到的标记更容易,让解析器将其作为语法错误处理。您可以看到 gcc 和其他常见编译器所做的事情,这证实了它是务实的选择。