0
여기는 내 프로그램의 일부입니다.들소와 C 코드 혼합
%{
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
int yylex(void);
int yylineno;
char* yytext;
void yyerror(const char *s) { printf("ERROR: %s\n", s); }
void addID(char *ID);
%}
%union{ char * string;}
%%
program:
|DECLARE vdeclarations IN commands END
;
vdeclarations:
vdeclarations IDENTIFIER {addID($2);}
| IDENTIFIER {addID($1);}
;
는 끝까지
struct list_ID {
char *ID;
int index;
struct list_ID * next;
};
typedef struct list_ID list_ID;
list_ID * curr, * head;
head = NULL;
int i = 0;
void addID(char *s)
{
curr = (list_ID *)malloc(sizeof(list_ID));
curr->ID = strdup(s);
curr->index = i++;
free(s);
curr->next = head;
head = curr;
}
에서 일부 C 함수는 간단히 말해서 나는 나에게 이러한 오류를 줄 연결리스트하지만 GCC 모든 식별자를 추가 할.
kompilator.y:74:1: warning: data definition has no type or storage class [enable
d by default]
kompilator.y:74:1: error: conflicting types for 'head'
kompilator.y:73:19: note: previous declaration of 'head' was here
kompilator.y:74:8: warning: initialization makes integer from pointer without a
cast [enabled by default]
kompilator.y: In function 'addID':
kompilator.y:82:13: warning: assignment makes pointer from integer without a cas
t [enabled by default]
kompilator.y:83:7: warning: assignment makes integer from pointer without a cast
[enabled by default]
이렇게 들소 믹스를 만드는 것은 불가능합니까? 또는 내 C 코드 부분에 문제가 있습니까?
이 정보에 어떤 문제가 있는지 알 수 없으므로 각 파일의 이름과 내용을 게시하고 프로그램을 컴파일하는 방법을 알려주십시오. –
당신은 그것의 * .y 파일을 표준적인'flex file.l bison -dy file.y gcc lex.yy.c y.tab.c -o file.exe' – whd