你好,我对如何在读取特定标记时获取char*感到困惑...
我查看了各种网站,它们提供了建议,但并不完整,我的意思是,例如缺少yylval和yytext声明或如何转换类型等
.l文件需要什么?
.y文件需要什么?
我有什么:
在.l文件中:
{WORD} { yylval = strdup(yytext);return T_ValidWord;}
在 .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 *’
其他一些让我感到困惑的事情: 在某些地方,我看到了以下内容:
yylval->something = yytext
yylval.something = yytext
yylval = yytext
在bison的手册中提到yylval是一个宏,我知道宏是一种被其他文本替换的文本,但在这种情况下我真的不明白。