这是我在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;