gpt4 book ai didi

c - 如何更改 yyerror 函数的参数

转载 作者:行者123 更新时间:2023-11-30 18:50:02 25 4
gpt4 key购买 nike

yyerror 在默认情况下打印“语法错误”。我想更改 yyerror 函数的参数。通过这种方式,我可以向用户打印更多信息丰富的错误消息。例如,在函数减速中,用户做了错误的事情。如果我可以更改 yyerror 函数的参数,我可以向用户打印更有意义的消息。

func_Dec: error_code=1 ....var_dec: error_code=2 ....

根据 error_code 值。我可以在 yyerror 函数中打印这样的错误消息:

void yyerror(int x){
if(x==1){printf("error while function decleration");};
if(x==2){printf("error while variable decleration ");};
}

最佳答案

那将非常困难/不可能。

当 yacc 遇到不在其前瞻集中的标记时,它会减少,直到堆栈上的状态变得可见,其中该标记有效。一旦它减少(弹出)所有状态并且堆栈变空,它就会断定它无法匹配 token 并报告语法错误

您可以做的是为自己维护一些有关正在发生的事情的状态信息,并在 yyerror 中使用它。

您可以自己编写一个yyerror函数。通常,如果没有提供 yyerror 函数,yacc 将使用库中的默认函数。但你可以自己写一个,例如:

int yyerror(void) {
if (gMyState== ERR_DECL) printf("Error in function declaration\n);
else ...
}

关于c - 如何更改 yyerror 函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41060022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com