如果yyparse失败,可以通过在bison文件中使用%error-verbose指令来跳过bison的某些部分。
%error-verbose指令告诉bison在解析错误时生成详细的错误信息。当yyparse失败时,bison会尝试恢复并继续解析,但有时候这可能会导致错误的级联。为了避免这种情况,可以使用%error-verbose指令来跳过某些部分。
具体步骤如下:
%error-verbose
例如,假设我们的语法规则如下:
expr : expr '+' expr
| expr '-' expr
| expr '*' expr
| expr '/' expr
| '-' expr %prec UMINUS
| '(' expr ')'
| NUMBER
如果我们想要在yyparse失败时跳过加法和减法的部分,可以将加法和减法的终结符标记为非关联的,并在语法规则中使用它们来跳过这些部分:
%nonassoc '+'
%nonassoc '-'
expr : expr '*' expr
| expr '/' expr
| '-' expr %prec UMINUS
| '(' expr ')'
| NUMBER
这样,当yyparse失败时,bison会跳过加法和减法的部分,继续解析其他部分。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云