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