一部のコードを解析するには、flex と bison を使用する必要があります。
YYSTYPE のデフォルトの型は ですがint
、そのように宣言したことはありません。それはバイソンのデフォルトですか?
文字列を返すと、とても助かります。私はこれを読みました:Bison の警告を解決する方法 "... 宣言された型がありません" これは良いアプローチのようです。(ユニオンの全機能はまだ必要ありません。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
ファイルからの1行があります:
[a-zA-Z]+[a-zA-Z0-9]* { yylval.str = strdup(yytext); return yident;}
エラーを解決するには、他に何をする必要がありますか?