私は私の.lexファイルにこのトークンを持っている:私はコンパイルしようとすると、私はこのエラーを取得するフレックスとバイソンのトークンの文字列値を取得するには?
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);
}
:
警告私.Yファイル内
[a-zA-Z0-9]+ { yylval = yytext; return ALPHANUM; }
と、このコード: 'strcat'の引数2を渡すと、キャストなしの整数からポインタが作成されます
$ 2はintなので、どうやって文字列にしますか?
例:「Sphere(worldGlobe)」。私は$ 2に文字列値worldGlobeをここに置いて欲しい。 %union
宣言が存在しない場合には、任意のヘルプ
Flexタグを削除しました。 Adobe Flexのためのもので、gnu-flexタグを追加しました。このタグは、字句解析ツールとあなたが探していたものを参照しています。 – JeffryHouser
.yファイルからユニオン宣言を、また.yファイルからALPHANUMのトークン宣言を表示できますか? – MtnViewJohn
複数のyylvalタイプがあるとします。あなたが返すものがchar *ならば、.yファイルのプロローグ部分に '#define YYSTYPE char *'を持たなければなりません。 – MtnViewJohn