我对如何使用yylval中定义的%union{}感到困惑,当yylvalint时,我可以使用$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/

10-10 20:56