我有這個令牌我.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