У меня есть эта проблема, когда мой файл YACC, похоже, не имеет доступа к типам, определенным в моем заголовочном файле.Yacc union on struct type
Если я заменю файл заголовка на %code requires{ }
, он распознает его, но это не совсем то, что я хочу.
Мой st.h заголовочный файл:
struct node {
int item;
int identifier;
struct node *left;
struct node *middle;
struct node *right;
};
typedef struct node NODE;
typedef NODE *TREE;
Мой parser.y файл:
%{
#include <stdio.h>
#include <stdlib.h>
#include "st.h"
%}
%union {
int value;
TREE token;
}
Yacc (или С) дает мне эту ошибку:
error: unknown type name ‘TREE’
Я понимаю что это, скорее всего, ошибка на моем конце, и я был бы очень признателен за любую помощь.
Примечание: ** никогда никогда ** 'typedef' указатель! И прочитайте [ask], укажите ** всю ** необходимую информацию. Не должно быть никаких проблем, чтобы указать ** точное ** сообщение об ошибке, с которого оно происходит, и где оно возникает. – Olaf
Это yacc или C, который дает ошибку? (Подсказка: какая команда была запущена, когда была создана ошибка?) И если это C, имеет ли ошибка файл сгенерированный yacc/bison или файл, который сгенерирован (f) lex? (Подсказка: сообщение об ошибке будет иметь имя файла рядом с ним.) – rici
Также: [mcve]. Представленный код компилируется правильно. – rici