2011-01-21 3 views
3

나는 컴파일러에 대한 배경 지식이 전혀 없으며 "나 자신을 가르쳐 라"여행을 시작했습니다. 내가 this 자습서를 사용하여 렉스에 대한 학습 및 파일에 이런 식으로 뭔가를 입력하고하는 것은 first.llex의 출력은 어떻게해야합니까?

%% 
    /* match everything except newline */ 
. ECHO; 
    /* match newline */ 
\n ECHO; 

%% 

int yywrap(void) { 
    return 1; 
} 

int main(void) { 
    yylex(); 
    return 0; 
} 

지금 내가 렉스은 (는) 위의 first.l 파일을 사용하여 얻는 모든 단지를 반향하는 토크 나이를 생성 해 이해했다. 내가 나서서 그것은 lex.yy.c라는 파일을 생성

lex first.l

을 달렸다. 이 자습서에서는 몇 가지 예제를 제공하고 yacc으로 이동합니다. 누군가 렉스가 생성 한 파일 lex.yy.c으로 무엇을 할 수 있는지 말해 줄 수 있습니까? 내 생각은 내가 지금 tokenizer가 있지만이 파일을 바이너리로 어떻게 컴파일합니까? gcc 사용?

답변

4

예, GCC를 사용합니다. 당신은 아마 이런 식으로 뭔가를하고 싶지 : GCC에 -c 플래그 연결하지만, 오브젝트 파일을 생성 한 후 중지하지 말 것을 지시

gcc -c file1.c 
gcc -c file2.c 
gcc -o result file1.o file2.o 

. 모든 파일을 컴파일 한 후에는 모두 gcc으로 전달하여 링크 할 수 있습니다.

그래서 귀하의 경우, 당신은 단지 가서 이진 얻을 lex에 의해 생성 된 출력 파일을 컴파일합니다 :

gcc -o output lex.yy.c 
+0

감사합니다. gcc를 사용하여 컴파일하는 방법을 알고 있지만 lex가 생성 한 파일로 무엇을해야하는지 알고 싶었습니다. 내가 gcc를 사용하여 컴파일해야한다는 사실이 밝혀졌으며 예상대로 작동합니다. 시간 내 줘서 고마워. 귀하의 답을 편집하여 마지막 단계를 추가하십시오. 희망하지 않습니다. – Legend

관련 문제