我有这个令牌我.lex文件:如何在flex和bison中获取令牌的字符串值?
[a-zA-Z0-9]+ { yylval = yytext; return ALPHANUM; }
这个代码我.Y文件:
Sentence: "Sphere(" ALPHANUM ")."
{
FILE* file = fopen("C:/test.txt", "a+");
char st1[] = "polySphere -name ";
strcat(st1, $2);
strcat(st1, ";");
fprintf(file,"%s", st1);
fclose(file);
}
我得到这个错误,当我尝试编译:
警告:传递'strcat'的参数2使得整型指针没有转换
所以$ 2是一个int,我如何使它成为一个字符串?
例如:“Sphere(worldGlobe)”。我想要$ 2在这里获得字符串值worldGlobe。
感谢所有帮助
我删除了Flex标签;这是用于Adobe Flex并添加了引用词法分析器的gnu-flex标签和[我相信]您正在寻找的内容。 – JeffryHouser 2011-12-26 04:00:31
您能否向我们展示您的.y文件中的联合声明以及来自.y文件的ALPHANUM的令牌声明? – MtnViewJohn 2011-12-26 04:46:27
假设您有多个yylval类型。如果你所有返回的都是char *,那么你应该在.y文件的序言部分有'#define YYSTYPE char *'。 – MtnViewJohn 2011-12-26 05:28:36