这是我在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
。如果我把struct放在它之前,那很好。我必须在每个Node
之前放置struct。
2 。如果我将char
更改为string
,struct
也显示unknown type name ‘string’
。似乎我不能使用除char,int之外的任何类型的数据。
编辑:如果我写2函数返回Node
类型,则表示我必须在它们之前放置struct,并显示conflicting types
错误。
更新:我实际上用C编译了我的代码,这就是它显示这些错误的原因。谢谢你们下面的回复。
答案 0 :(得分:2)
对于C,它需要
struct Node *node;