こんにちは、特定のトークンを読むときにchar *を取得する方法について混乱しています... 私はさまざまなサイトを見ていますが、提案はしていますが完全ではありません。 yytext宣言がないか、型の変換方法などバイソンのyylvalを使用して文字列を復元する
.lファイルには何が必要ですか? .yファイルには何が必要ですか?
%union{
char *str;
}
%token<str> T_ValidWord
%%
element:
T_OpenTag T_ValidWord ele1 {printf("%s", $2);}
;
エラー:
xml.lex: In function ‘yylex’:
xml.lex:34: error: incompatible types when assigning to type ‘YYSTYPE’ from type ‘char *’
他のものより.Yファイル内
{WORD} { yylval = strdup(yytext);return T_ValidWord;}
:私は.Lファイルに
を持って何
私を混乱させた:私はそのyylvalを教えバイソンのマニュアルでは
yylval->something = yytext
yylval.something = yytext
yylval = yytext
を参照してくださいいくつかの場所でマクロですが、私はマクロが他のテキストのためのテキストに置換されていることを理解しますが、このような状況で、私は実際にそれを得ることはありません。
オウエア、ありがとう、何が良い答え:) – mjsr