如何在yacc中使用yylval和union

时间:2016-02-12 04:37:53

标签: c bison yacc

我对如何使用yylval中定义的%union{}感到困惑,当yylvalint时,我可以使用$1和{{1}引用标记,但是使用联合类型我不知道该怎么做。我在这里得到了定义:

$2

例如,当yylval是像这样的字符串时,我有一个规则

%union {
    int intval;
    double floatval;
    char *strval;
    int subtok;
}

如何将其更改为line: SELECT items'\n' { printf("select item %s\n", $2); };

1 个答案:

答案 0 :(得分:3)

在声明令牌时声明每个令牌的类型......

%token <strval> items

声明令牌后声明类型......

%type <strval> items

或者在抓取值时指定类型...

$<strval>2