会员请求;在非结构或联合的事物中
这是我的 .lex 文件:
"Sphere" {return SPHERE;}
"(" {return LBRACKET;}
")" {return RBRACKET;}
"." {return DOT;}
[a-zA-Z][a-zA-Z0-9]* {yylval.s = yytext; return NAME;}
[ \t\n]+ /* ignore */
. return yytext[0];
这是我的 bison .y 文件:
%union {
char* s;
double d;
int i;
}
/* Operators */
/* Tokens */
%token ALPHANUM
%token SPHERE
%token LBRACKET
%token RBRACKET
%token DOT
%token NAME
/* type declarations */
%type<s> NAME
%%
sentence: SPHERE LBRACKET NAME RBRACKET DOT
{
printf("%i\n", $3);
}
;
我得到的错误是:
“请求非结构或联合中的成员”
谢谢您的帮助
This is my .lex file:
"Sphere" {return SPHERE;}
"(" {return LBRACKET;}
")" {return RBRACKET;}
"." {return DOT;}
[a-zA-Z][a-zA-Z0-9]* {yylval.s = yytext; return NAME;}
[ \t\n]+ /* ignore */
. return yytext[0];
This is my bison .y file:
%union {
char* s;
double d;
int i;
}
/* Operators */
/* Tokens */
%token ALPHANUM
%token SPHERE
%token LBRACKET
%token RBRACKET
%token DOT
%token NAME
/* type declarations */
%type<s> NAME
%%
sentence: SPHERE LBRACKET NAME RBRACKET DOT
{
printf("%i\n", $3);
}
;
The error I get is:
"request for member ‘s’ in something not a structure or union"
Thank you for any help
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果我没记错的话,
NAME
是一个终端。因此,声明其类型的正确方法是:%type
仅用于非终结符。If I'm not mistaken,
NAME
is a terminal. Therefore, the correct way of declaring its type is this:%type
is used only for nonterminals.