gpt4 book ai didi

c - 传递 lex 和 yacc 之间的 union 内容

转载 作者:行者123 更新时间:2023-11-30 16:23:55 25 4
gpt4 key购买 nike

我在 yacc 文件中创建了一个 union :

%union { char* x; int y;}

在我的 lex 文件中,我有类似的内容:

"+"     {yylval.x = yytext; yylval.y=1}

但是当我在 yacc 中打印内容时,内容没有被复制

rule:  rules  {printf("%s %d", yylval.x, yylval.1);}

我该如何解决这个问题?

最佳答案

yytext 在进入扫描范围之前一直可用,但稍后其值未定义。简单的解决方案是在扫描仪中 strdup() yytext 并在 bison 和中使用其存储的值还要确保释放该内存。以下是可行的。

"+"     {yylval.x = strdup(yytext); yylval.y=1}

关于c - 传递 lex 和 yacc 之间的 union 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53799676/

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