我对如何使用yylval
中定义的%union{}
感到困惑,当yylval
为int
时,我可以使用$1
和{{1}引用标记,但是使用联合类型我不知道该怎么做。我在这里得到了定义:
$2
例如,当yylval是像这样的字符串时,我有一个规则
%union {
int intval;
double floatval;
char *strval;
int subtok;
}
如何将其更改为line: SELECT items'\n' { printf("select item %s\n", $2); };
?
答案 0 :(得分:3)
在声明令牌时声明每个令牌的类型......
%token <strval> items
声明令牌后声明类型......
%type <strval> items
或者在抓取值时指定类型...
$<strval>2