Slide Chương trình dịch (UNIT5) - GV Nguyễn Thị Thu Hương

LI
lienhejb
다운로드 0회
4
0

자료 내용

1쪽

21/1/2010 Nhiệm vụ của bộ phân tích từ vựng „ Phát hiện các từ tố Bài 5 BBộộ pphânhân ttíchích ttừừ vvựựnngg „ Bỏ qua các ký tự không cần thiết … Khoảng trống … Dấu tab … Ký tự xuống dòng (CR,LF) … Chú thích 1 2 Từ tố có cấu trúc cú pháp Xử lý các luật từ vựng trong bộ phân tích cú pháp ? „ Làm cho bộ phân tích cú pháp trở nên quá phức tạp ……Phân biPhân biệệt tên và tt tên và từừ khoákhoá …Phải có những luật phức tạp để xử lý chuỗi các ký tự không cần thiết (khoảng trống, tab, chú thích . . . .) „ Tại sao không xử lý các luật này trong giai đoạn phân tích cú pháp ? 3 4 goupee.com fb.com/groups/goupee 1

2쪽

21/1/2010 Các từ tố của KPL Ôtômat hữu hạn của bộ PTTV „ Số nguyên „ Định danh „ Từ khóa: begin,end, if,then, while, do, call, const, var, procedure, program,type, function,of,integer,char,else,for, to,array „ Hằng ký tự „ DDấấu phéhép t átoán: … số học + - */ … so sánh = != < > <= >= „ Dấu phân cách ( ) . : ; (. .) „ Dấu phép gán := Sau mỗi từ tố được nhận biết, bộ từ vựng lại quay lại trạng thái s0 5 6 Xử lý các loại từ tố Các phép toán quan hệ case 0 : c= nextchar(); switch(state) if(c==blank || c= =tab || c= =newline ){ state = 0; { lexeme_beginning++; //chuyển con trỏ đến đầu từ tố) case 0 // Bỏ qua khoảng trống } case 1// Xcase 1// Xửử lý các phép toán quan hlý các phép toán quan hệệ case 1: if(c= = '<') state = 1a; case 10 else if (c= = '=') state = 4; // Xử lý tên else if (c= = ‘!') state = 5; else if (c= = ‘>') state = 7; case 13 else state =fail();break; // Xử lý số case 1a: c:=nextchar(); if (c= = '=') state = 2; . . . Else state=3; } case 2: return (leq) 7 8 goupee.com fb.com/groups/goupee 2

3쪽

21/1/2010 Số nguyên Định danh case 13: c = nextchar(); case 10: c = nextchar(); if(isdigit(c)) state = 14; if(isletter(c)) state =11; case 14: ccase 14: c nextchar();=nextchar(); else state = fail; break; case 11: if(isdigit(c)) state = 14; c = nextchar(); else state = 15; break; if(isletter(c)) state =11; case 15 : retract(1); else if (isdigit(c)) state = 11; else state = 12; break; install_num(); case 12: retract(1) ; return(num); install_id(); return (gettoken()); 9 10 Các thông tin trong bảng ký hiệu Xử lý tên / từ khoá „ Tên: xâu ký tự „ Thuộc tính: tên kiểu,tên biến, tên thủ tục, tên hằngg. . . „ Kiểu dữ liệu „ Phạm vi sử dụng „ Địa chỉ vùng nhớ,kích cỡ vùng nhớ „ . . . 11 12 goupee.com fb.com/groups/goupee 3

4쪽

21/1/2010 Cấu trúc dữ liệu enum symbol { nul, ident, number, plus,minus, times, slash, eql,neq, lss,leq,grt,geq,eql,neq, lss,leq,grt,geq, lparen, rparen, comma, semicolon, period, becomes, quote, colon, lsquare,rsquare, beginsym, endsym, ifsym,thensym, whilesym,dosym, callsym,constsym,varsym,procsym,programsym,typesym, funcsym,ofsym,integersym,charsym,elsesym,forsym, tosym, arraysym }; 13 goupee.com fb.com/groups/goupee 4

앞 4페이지만 표시됩니다. 전체를 보려면 자료를 다운로드하세요.

댓글 (0)

로그인 하여 토론에 참여하기

댓글이 없습니다. 첫 댓글을 남겨보세요!