% команда top кода не включает свое содержимое в файл parser.tab.h (так и должно быть, верно?). Бизон версия 2.4.1. В чем проблема с этим (упрощенным) кодом?
%{
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <io.h>
#define YYDEBUG 0
int errors;
%}
%code top {
struct DICT
{
char *Name;
int Offs;
int Size;
struct DICT *Next;
};
typedef struct DICT DICT;
struct NODE
{
int ID;
int Value;
DICT *Var;
struct NODE *Left;
struct NODE *Right;
};
typedef struct NODE NODE;
}
%{
NODE *Tree = 0;
NODE *Node(int ID, int Value, DICT *Var, NODE *Left, NODE *Right);
void yyerror(char *s)
{
errors++;
printf("%s\n", s);
}
%}
%no_lines
%union
{
int Value;
char *ID;
NODE *Node;
}
EDIT:
с "% code требуется" проблема была решена, но возникла другая проблема:
parser.tab.h: 40: ошибка: переопределение 'struct DICT'
parser.tab.h: 47: ошибка: переопределение typedef 'DICT'
parser.tab.c: 145: ошибка: предыдущее объявление DICT было здесь