如何在yacc中声明“struct”变量

时间:2013-10-07 23:35:16

标签: c++ compiler-construction yacc

这是我在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更改为stringstruct也显示unknown type name ‘string’。似乎我不能使用除char,int之外的任何类型的数据。

编辑:如果我写2函数返回Node类型,则表示我必须在它们之前放置struct,并显示conflicting types错误。

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

1 个答案:

答案 0 :(得分:2)

对于C,它需要

struct Node *node;