gpt4 book ai didi

c - 在 yacc 中使用 union 来表示结构

转载 作者:行者123 更新时间:2023-11-30 14:31:09 24 4
gpt4 key购买 nike

我对如何指定语法成员的类型有点困惑。我想将 prog 和 decls 声明为 ASTNode。我将使用这些成员添加到列表等。但是 yacc 无法将它们识别为 ASTNode,并且我收到类型错误。

这里我的 tIdent、tCharConst、tIntConstant 有一些类型,但是如何为我的成员提供 ASTNode 类型。

%union{
int ival;
char cval;
char *sval;
struct ASTNode *nval;
}

%token <sval> tIdent
%token <cval> tCharConst
%token <ival> tIntConst

prog : decls ;
decls : /* empty */
| decls decl
;

最佳答案

.y 文件的开头,您需要类似的内容

%{
struct ASTNode { ... };
%}

为了声明ASTNode的类型。或者您也可以将其放入 .h 文件中:

%{
#include "astnode.h"
%}
%union {
...
}
%term ...

等等。

关于c - 在 yacc 中使用 union 来表示结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1964709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com