나는 들소에서 의미 분석을하고 있는데 토큰과 연관된 여러 속성을 사용하려고합니다. 내 코드의 관련 부분은 다음과 같습니다.들소의 다중 속성
%union semrec
{
int Type;
char *id;
}
%start prog
%token <id> tIDENT
여기에서 tIDENT 토큰과 함께 "id"속성 만 사용할 수 있습니다. 또한 "Type"속성을 tIDENT 토큰과 연관 시키려고합니다.
%token <id> tIDENT
%token <Type> tIDENT
를하지만 나에게 토큰 tIDENT에 대한 재 선언의 경고를 제공 이렇게하려면, 나는 다음 시도했다. 나는 또한 다음을 시도했다 :
%token <id> <Type> tIDENT
또한 작동하지 않았다. 내가 무엇을 할 수 있을지? 나는 이것이 약간의 통사 적 문제라고 생각한다.
감사합니다.
고마워요,하지만 이번에는 다음과 같은 오류가 나타납니다. 스캐너에서 나는 다음과 같은 것을 가지고 있습니다 : [A-Za-z] [A-Za-z0-9] * {yylval.id = (char *) 이제 'YYSTYPE'에는 'id'라는 회원이 없습니다. –
또한 'yylval.type_id.id = strdup (yytext)'와 같은 스캐너를 조정해야합니다. 그리고 의미 론적 가치에 대한 Bison의 문서를 철저히 읽어야합니다. – akim
이제 내가 [A-Za-z] [A-Za-z0-9] * {yylval.type_id.id = (char *) strdup (yytext); return tIDENT;}로 바 꾸었습니다. 고마워요! –