Parsing lexer是否可以将坏令牌传递给解析器?

Parsing lexer是否可以将坏令牌传递给解析器?,parsing,compiler-errors,compiler-construction,lexical-analysis,lexical,Parsing,Compiler Errors,Compiler Construction,Lexical Analysis,Lexical,在编译器的词法分析阶段,如果遇到一个坏的标记,那么词法分析器将进入错误恢复模式,假设它丢弃该标记,直到看到下一个分号并再次开始分析。然后,生成的整个令牌被传递给解析器 我的意思是说,如果lexer遇到错误,那么编译是在此时停止,还是继续并进入解析阶段 在编译器的词法分析阶段,如果遇到一个坏的标记,那么词法分析器将进入错误恢复模式,假设它丢弃该标记,直到看到下一个分号并再次开始分析 这只是一种方法,不是最好的 然后将生成的所有标记传递给解析器 不,只有下一个合法代币 我的意思是说,如果lexer遇

在编译器的词法分析阶段,如果遇到一个坏的标记,那么词法分析器将进入错误恢复模式,假设它丢弃该标记,直到看到下一个分号并再次开始分析。然后,生成的整个令牌被传递给解析器

我的意思是说,如果lexer遇到错误,那么编译是在此时停止,还是继续并进入解析阶段

在编译器的词法分析阶段,如果遇到一个坏的标记,那么词法分析器将进入错误恢复模式,假设它丢弃该标记,直到看到下一个分号并再次开始分析

这只是一种方法,不是最好的

然后将生成的所有标记传递给解析器

不,只有下一个合法代币

我的意思是说,如果lexer遇到错误,那么编译是在此时停止,还是继续并进入解析阶段

它还在继续

但几十年来,我一直在做相反的事情。我没有让lexer尝试自己进行错误恢复,而是将有问题的字符返回给解析器。由于解析器通常配备了更好的错误恢复,这将导致更具容错性的解析

lex/flex实现示例:

. return yytext[0];

这取决于您使用的解析器/词法分析器和配置。你想知道具体的解析器/词法分析器组合吗?其他语言是如何做到这一点的。另外,您能否告诉我,我们在编译过程中看到的错误是在每个编译阶段检测到的错误的混合,还是仅仅来自一个编译阶段的错误?这与语言无关。它是lexer/parser对的一个属性。我也不明白你的新问题。好吧,我从你的回答中得到了我想问的问题。忽略我的新问题。你的回答消除了我的疑虑。谢谢,还有一件事,既然你说它不是最好的,那么错误恢复模式的其他方式是什么呢。请给我一些链接,如果你有,我可以看到不同的错误恢复模式在解析器。我给了你我的答案。让解析器来做。如果你想要一个不同的答案,你必须从别人那里得到。这是我的。