запрос на членство в чем-то не структура или объединение - PullRequest
0 голосов
/ 27 декабря 2011

Это мой файл .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];

Это мой бизон .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);
}
 ;

Я получаю ошибку:

«запрос на членство в чем-то, что не является структурой или объединением»

Спасибо за любую помощь

1 Ответ

1 голос
/ 27 декабря 2011

Если я не ошибаюсь, NAME - это терминал. Следовательно, правильный способ объявления его типа таков:

%token <s> NAME

%type используется только для нетерминалов.

...