gpt4 book ai didi

c++ - 编译错误。如何使用 lex/yacc 解析变量名?

转载 作者:行者123 更新时间:2023-11-30 17:22:39 25 4
gpt4 key购买 nike

在我的 lex 文件中,我有:

[a-zA-Z][a-zA-Z0-9]*
{
yylval.val = _strdup(yytext); // <- error here
yylval.length = yylen;
return id;
}

...用于解析“myid2”等文本

这会导致编译错误:

error C2143: syntax error : missing ';' before '='

如何正确执行此操作,以便我可以将 id 作为字符串 (char *) 在 yacc 文件中传递?

我正在使用 win_flex 和 win_bison。

更新:我将这些语句放在 lex 文件中的一行上:

[a-zA-Z][a-zA-Z0-9]* { yylval.val = _strdup(yytext); yylval.length = yylen; return id; }

现在我得到编译错误:

error C2039: 'length' : is not a member of 'YYSTYPE'
error C2039: 'val' : is not a member of 'YYSTYPE'
error C2065: 'yylen' : undeclared identifier

最佳答案

我找到了这个问题的解决方案。 yylval 的成员必须对应于 lex 文件中的 union 声明,如下所示:

[a-zA-Z][a-zA-Z0-9]* { yylval->str = _strdup(yytext); return id; }

...并在 yacc 文件中:

%union
{
char *str;
...
}

关于c++ - 编译错误。如何使用 lex/yacc 解析变量名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27948489/

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