Resources Flex gcc Flex for lex http gnuwin

  • Slides: 19
Download presentation

Resources: 윈도우용 Flex, gcc • Flex // for lex – http: //gnuwin 32. sourceforge.

Resources: 윈도우용 Flex, gcc • Flex // for lex – http: //gnuwin 32. sourceforge. net/packages/flex. ht m • gcc // for executing flex & bison – http: //sourceforge. net/projects/mingw/files/Old. Fil es/Min. GW%205. 1. 4/Min. GW-5. 1. 4. exe/download 2

Setup Flex • flex – 환경변수 Path에 "; C: ₩Gnu. Win 32₩bin” 삽입 4

Setup Flex • flex – 환경변수 Path에 "; C: ₩Gnu. Win 32₩bin” 삽입 4

Setup gcc • Min. GW(gcc) – 모두 Next를 누르다가 Candidate 선택 5

Setup gcc • Min. GW(gcc) – 모두 Next를 누르다가 Candidate 선택 5

Setup gcc • Min. GW(gcc) – 환경변수에서 ; C: ₩Min. GW₩bin 입력 6

Setup gcc • Min. GW(gcc) – 환경변수에서 ; C: ₩Min. GW₩bin 입력 6

Bison • Bison // for parser – http: //gnuwin 32. sourceforge. net/packages/bison. htm 11

Bison • Bison // for parser – http: //gnuwin 32. sourceforge. net/packages/bison. htm 11

윈도우용 Bison • Bison 12

윈도우용 Bison • Bison 12

윈도우용 Bison, Flex, gcc • Bison – 환경변수 Path에 ; C: ₩Gnu. Win 32₩bin

윈도우용 Bison, Flex, gcc • Bison – 환경변수 Path에 ; C: ₩Gnu. Win 32₩bin 삽입 14

예제: Yacc 파일 ( Lex 사용시) calc. y %{ #include <stdio. h> %} %token

예제: Yacc 파일 ( Lex 사용시) calc. y %{ #include <stdio. h> %} %token NUMBER %% command: exp { printf("%dn", $1); } ; exp : | | exp '+' term {$$ = $1 + $3; } exp '-' term {$$ = $1 - $3; } term {$$ = $1; } ; term : term '*' factor {$$ = $1 * $3; } | factor {$$ = $1; } ; factor: NUMBER | '(' exp ')' ; %% {$$ = $1; } {$$ = $2; } main() { if (yyparse() ==0) printf("parsing Success!!!nn"); else printf("parsing Fail!!!nn"); } int yyerror(char *s) { fprintf(stderr, "%sn", s); return 0; } 16

예제: Lex 파일(yacc 사용시) 토큰 정의 포함 calc. l %{ #include "calc. tab. h"

예제: Lex 파일(yacc 사용시) 토큰 정의 포함 calc. l %{ #include "calc. tab. h" %} %% [0 -9]+ [ t] n. %% {yylval = atoi(yytext); return NUMBER; } ; return 0; return yytext[0]; >flex calc. l >bison –d calc. y >gcc –o calc lex. yy. c calc. tab. c –lfl -ly // 입력 끝 표시 ‘-d’의 옵션으로 calc. tab. h를 추가로 생성. 그렇 지 않으면 calc. tab. c만 생성 Yacc 라이브러리 링크 17

test >gcc –o calc lex. yy. c calc. tab. c –lfl -ly 19

test >gcc –o calc lex. yy. c calc. tab. c –lfl -ly 19