Это мой код в 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
,
2.Если я изменю char
в string
в struct
это показывает unknown type name ‘string’
тоже. кажется, я не могу использовать любой тип данных, кроме char, int.
редактировать: если я напишу 2 функции, возвращающие Node
типа, это означает, что я должен поставить структуру перед ними, и это показывает, conflicting types
ошибка.
Обновить: Я на самом деле скомпилировал свой код с C, поэтому он показал эти ошибки. Спасибо вам, ребята, за эти ответы ниже.
Для C это должно быть
struct Node *node;
Других решений пока нет …