我对如何使用yylval
中定义的%union{}
感到困惑,当yylval
是int
时,我可以使用$1
和$2
对标记的引用,但是对于union类型,我不知道如何使用。我这里有定义:
%union {
int intval;
double floatval;
char *strval;
int subtok;
}
例如,当yylval是这样的字符串时,我有一个规则
line: SELECT items'\n' { printf("select item %s\n", $2); };
如何改为
strval
? 最佳答案
在声明令牌时声明每个令牌的类型
%token <strval> items
声明标记后声明类型。
%type <strval> items
或者在获取值时指定类型。。。
$<strval>2
关于c - 如何在yacc中将yylval与union一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35354918/