会员请求;在非结构或联合的事物中

发布于 2024-12-22 20:28:13 字数 666 浏览 2 评论 0原文

这是我的 .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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

肤浅与狂妄 2024-12-29 20:28:13

如果我没记错的话,NAME 是一个终端。因此,声明其类型的正确方法是:

%token <s> NAME

%type 仅用于非终结符。

If I'm not mistaken, NAME is a terminal. Therefore, the correct way of declaring its type is this:

%token <s> NAME

%type is used only for nonterminals.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文