2012-06-01 4 views
1

Bison/YACC 및 Flex/Lex를 시작했지만 가장 간단한 파서를 컴파일 할 수 없습니다.Bison/Flex 파일을 컴파일하는 동안 정의되지 않은 토큰

파일 : Ruby.y

%{ 
#include <stdio.h> 
#include <stdlib.h> 
%} 

%start program 
%token NUMBER 

%% 

program : NUMBER; 

%% 

main(int argc, char* argv[]) { 
    yyparse(); 
} 

yyerror(char *s){ 
    printf("%s\n", s); 
} 

파일 : Ruby.l

%{ 
#define "Ruby.tab.h" 
%} 
DIGIT [0-9] 
%% 
{DIGIT}+ { return(NUMBER);   } 
[ \t\n]+ 
.   { return(yytext[0]);  } 
%% 

나는 "들소가 Ruby.y을 -Vd"을 사용하여 Ruby.y를 컴파일 한 후 "플렉스 Ruby.l" "GCC -c Ruby.tab.c"와 "GCC -c lex.yy.c"를 사용하여 GCC를 사용하여 전체 컴파일을 시도했지만 후자에 다음 오류가 발생했습니다.

Ruby.l : 2 : 9 : 오류 : 매크로 이름은 식별자 여야합니다. Ruby.l : fRuby.l : 6 : 10 : 참고 : 선언되지 않은 각 식별자는 각 재미에 대해 한 번만보고됩니다. ction (한글) : ction 그것이 나타납니다

나는 우둔 해요, 어떤 생각?

감사합니다. Ruby.l에서

답변

0

이 파일 :

%{ 
#define "Ruby.tab.h" 
%} 

가 있어야한다 :

%{ 
#include "Ruby.tab.h" 
%} 
+0

하나님, 내가 그렇게 믿을 수 없을만큼 바보 같은 느낌! 내가 그걸 놓쳤다는 것을 믿을 수 없어! 나는 샘플과 매뉴얼을 읽었으며 include 대신에 정의를 사용했다. * 때 리고 forheads * 고마워! –

관련 문제