Tải bản đầy đủ - 0 (trang)
III. BỘ CÔNG CỤ FLEX VÀ BISON (12/12)

III. BỘ CÔNG CỤ FLEX VÀ BISON (12/12)

Tải bản đầy đủ - 0trang

IV. DEMO (1/7)

 Ví dụ 1:

Xin chào và

tạm biệt

File Flex:

Hello.l



Hello.l



%{

#include "y.tab.h"

int yyerror(char *errormsg);

%}

%%

("xin chao"|"hi"|"hello")"\n"

{ return HI; }

("tam biet"|"bye"|"goodbye"|"bye bye")"\n" { return BYE; }

.

{ yyerror("Unknown char"); }

%%

int main(void){

yyparse();

return 0;

}

int yywrap(void){

return 0;

}

int yyerror(char *errormsg){

fprintf(stderr, "%s\n", errormsg);

exit(1);

}



IV. DEMO (2/7)



 Ví dụ 1:



Xin chào và

tạm biệt

File Bison:

Hello.y



Hello.y



%{

#include

#include

int yylex(void);

int yyerror(const char *s);

%}

%token HI BYE

%%

program:

hi bye

;

hi:

HI

;



{ printf("Xin chao!\n"); }



bye:

BYE { printf("Tam biet!\n"); exit(0); }



IV. DEMO (3/7)



 Ví dụ 1:



Gõ lệnh flex Hello.l

Kết quả dược file lex.yy.c

Gõ lệnh bison –dy Hello.y

Kết quả dược 2 file y.tab.c và

y.tab.h

Gõ lệnh gcc lex.yy.c y.tab.c

Kết quả dược file a.exe

Để chạy chương trình, gõ a

Gõ “xin chao” hoặc “hi”, hoặc

“hello”, hoặc “bye”,… để kiểm tra

output



Console



>flex Hello.l

>bison –dy Hello.y

>gcc lex.yy.c y.tab.c

>a

>xin chao

>Xin chao!

>a

>hi

>Xin chao!



IV. DEMO (4/7)

 Ví dụ 2:

Kiểm tra số

chẵn lẽ

File Flex:

vidu2.l



Vidu2.l



%{

#include

#include "y.tab.h"

%}

%%

[0-9]*[02468]"\n"

[0-9]*[13579]"\n"

%%

int main(void){

yyparse();

return 0;

}

int yywrap(void){

return 0;

}

int yyerror(void){

printf("Error\n");

exit(1);

}



{ return EVEN; }

{ return ODD; }



IV. DEMO (5/7)

 Ví dụ 2:

Kiểm tra số

Chẵn lẻ

File Bison:

vidu2.y



Vidu2.y



%token EVEN ODD

%%

input:

EVEN { printf("EVEN NUMBER\n"); return 0; }

|ODD { printf("ODD NUMBER\n"); return 0; }

;



IV. DEMO (6/7)

 Ví dụ 2:

Gõ lệnh flex vidu2.l

Kết quả dược file lex.yy.c

Gõ lệnh bison –dy vidu2.y

Kết quả dược 2 file y.tab.c và

y.tab.h

Gõ lệnh gcc lex.yy.c y.tab.c

Kết quả dược file a.exe

Để chạy chương trình, gõ a

Gõ các số … để kiểm tra

output



Console



>flex vidu2.l

>bison –dy vidu2.y

>gcc lex.yy.c y.tab.c

>a

>21231

>ODD NUMBER

>a

>2222

>EVEN NUMBER



IV. DEMO (7/7)

 Ví dụ 3: Chương trình

Calculator

Gõ lệnh flex calculator.l

Kết quả dược file lex.yy.c

Gõ lệnh bison –dy calculator.y

Kết quả dược 2 file y.tab.c và

y.tab.h

Gõ lệnh gcc lex.yy.c y.tab.c

Kết quả dược file a.exe

Để chạy chương trình, gõ a

Gõ các biểu thức … để kiểm tra

output



Console



>flex calculator.l

>bison –dy calculator.y

>gcc lex.yy.c y.tab.c

>a

>100+342

>



Result: 442



>20+(5+4*21/14)-30

>

>exit

>bye!



Result: 1.000000



CHÂN THÀNH CẢM ƠN



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

III. BỘ CÔNG CỤ FLEX VÀ BISON (12/12)

Tải bản đầy đủ ngay(0 tr)

×