Hallo ich bin verwirrend über, wie man ein char * wenn ich ein bestimmtes Token ... Ich schaue in verschiedenen Websites und sie bieten Vorschläge, aber nicht vollständig, ich meine, zum Beispiel yylval und yytext deklaration fehlt oder wie die typen zu transformieren, etc.Yylval in Bison verwenden, um eine Zeichenfolge wiederherzustellen
Was ist in .l datei brauchen? Was ist in .y Datei erforderlich?
Was ich habe
in der Datei .L:
{WORD} { yylval = strdup(yytext);return T_ValidWord;}
in der .y-Datei:
%union{
char *str;
}
%token<str> T_ValidWord
%%
element:
T_OpenTag T_ValidWord ele1 {printf("%s", $2);}
;
Der Fehler:
xml.lex: In function ‘yylex’:
xml.lex:34: error: incompatible types when assigning to type ‘YYSTYPE’ from type ‘char *’
Andere Sache mehr Das verwirrte mich:iAn einigen Stellen sehen
yylval->something = yytext
yylval.something = yytext
yylval = yytext
Im Handbuch des Bisons sagt, dass yylval ein Makro ist, verstehe ich, dass ein Makrotext für anderen Text ersetzt ist, aber in dieser Situation ich es wirklich nicht bekommen.
ouyea, vielen Dank, was für eine gute Antwort :) – mjsr