Bison使用一个特殊的错误令牌(称为“错误”),可以在Bison解析器中使用它来从错误中恢复。有没有办法从Flex生成的扫描程序返回此特定标记?
答案 0 :(得分:1)
'错误'令牌实际上不是令牌。它仅用于错误处理。
在http://dinosaur.compilertools.net/yacc/index.html上,您可以阅读:令牌名称错误保留用于错误处理,不应该天真地使用。
在我自己的解析器中,我使用这样的错误令牌(解析类似C语言的宏语言:
StatementList :
| StatementList Statement ';'
| error ';'
如果用户发出错误,yacc / bison将一直持续到下一个分号(语句结束),然后继续下一个语句。