如何在 yacc 中声明"struct"变量

How to declare a "struct" variable in yacc

本文关键字:struct 变量 声明 yacc      更新时间:2023-10-16

这是我在yacc中的代码:

%{
#include <stdio.h>
#include <stdbool.h>
%}
%code requires{
struct Node {
char* nodeValue;         
 struct Node* leftOperand;
 struct Node* rightOperand;    
 char* nodeType;
  };
}
%union {
char *string;
Node *node;  <---  error here
}

1.我不知道为什么它显示错误:unknown type name ‘Node’甚至我在上面声明了Node。如果我把结构放在它前面,那就好了。而且我必须在每个Node之前放置结构.

2.如果我在struct中将char更改为string,它也会显示unknown type name ‘string’。似乎我不能使用除字符、int 以外的任何类型的数据。

编辑:如果我编写 2 个返回 Node 类型的函数,这意味着我必须在它们之前放置结构,并且它显示conflicting types错误。

更新:我实际上用 C 编译了我的代码,这就是它显示这些错误的原因。谢谢你们在下面的回复。

对于 C,它需要

struct Node *node;