我需要使用flex和野牛來解析一些代碼。野牛YYSTYPE:試圖使用char *
YYSTYPE的默認類型是int
,儘管我從來沒有這樣聲明過。這是來自野牛的默認值嗎?
這將幫助我很多傳遞字符串回來。我讀到:How to solve Bison warning "... has no declared type"這看起來很不錯。 (我不需要聯盟的全部力量,只是char *部分,但我可能會使用聯盟,因爲它稍後可能會有所幫助。)
它不適合我。我得到這些錯誤:
y:111.37-38: $1 of `ConstExpression' has no declared type
y:113.34-35: $1 of `ConstFactor' has no declared type
y:114.35-36: $1 of `ConstFactor' has no declared type
y:119.34-35: $1 of `Type' has no declared type
y:109.23-48: warning: type clash on default action: <str> != <>
y:115.23-27: warning: type clash on default action: <str> != <>
[...more of the same snipped...]
下面是我y
語法文件的聲明:
%union {
char *str;
}
%type<str> ConstExpression ConstFactor Type
這裏是我的.l
文件中的一行:
[a-zA-Z]+[a-zA-Z0-9]* { yylval.str = strdup(yytext); return yident;}
還有什麼我需要要做什麼來解決錯誤?
你真的認爲人們可以調試你的語法文件,沒有看到它來定義類型的令牌? – 2009-11-22 11:25:03
@Kinopiko,你認真對待這個,是因爲他不僅僅是把他的整個作業都粘貼在裏面,並且說「給我看代碼」?它會殺了你只說:「我需要更多的信息,請發佈整個語法文件」或者其他的? – steveha 2009-11-22 20:01:00
@Kinopiko,當他發佈你所請求的信息時,你會撤銷你的downvote嗎?這看起來很苛刻。 – steveha 2009-11-22 20:01:44