CHƯƠNG TRÌNH DỊCH bài 5 bộ PHẬN TÍCH từ VỰNG

4 206 0
CHƯƠNG TRÌNH DỊCH   bài 5 bộ PHẬN TÍCH từ VỰNG

Đang tải... (xem toàn văn)

Thông tin tài liệu

21/1/2010 Nhiệm vụ phân tích từ vựng „ Phát từ tố „ Bỏ qua ký tự không cần thiết Bài Bộ phân tích từ vựng … … … … Khoảng trống Dấu tab Ký tự xuống dòng (CR,LF) Chú thích Từ tố có cấu trúc cú pháp Xử lý luật từ vựng phân tích cú pháp ? „ Làm cho phân tích cú pháp trở nên phức tạp … Phân biệt tên từ khoá có luật phức tạp để xử lý chuỗi ký tự không cần thiết (khoảng trống, tab, thích ) … Phải „ Tại không xử lý luật giai đoạn phân tích cú pháp ? 21/1/2010 Các từ tố KPL „ „ „ „ „ „ „ Ôtômat hữu hạn 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ự Dấ phép Dấu ttoán: … số học + - */ … so sánh = != < > = Dấu phân cách ( ) : ; ( .) Dấu phép gán := Sau từ tố nhận biết, từ vựng lại quay lại trạng thái s0 Xử lý loại từ tố Các phép toán quan hệ case : c= nextchar(); if(c==blank || c= =tab || c= =newline ){ state = 0; lexeme_beginning++; //chuyển trỏ đến đầu từ tố) } case 1: if(c= = '') state = 7; else state =fail();break; case 1a: c:=nextchar(); if (c= = '=') state = 2; Else state=3; case 2: return (leq) switch(state) { case // Bỏ qua khoảng trống case 1// Xử lý phép toán quan hệ case 10 // Xử lý tên case 13 // Xử lý số } 21/1/2010 Số nguyên Định danh case 13: c = nextchar(); if(isdigit(c)) state = 14; case 14: cc=nextchar(); nextchar(); if(isdigit(c)) state = 14; else state = 15; break; case 15 : retract(1); install_num(); return(num); case 10: c = nextchar(); if(isletter(c)) state =11; else state = fail; break; case 11: c = nextchar(); if(isletter(c)) state =11; else if (isdigit(c)) state = 11; else state = 12; break; case 12: retract(1) ; install_id(); return (gettoken()); 10 Xử lý tên / từ khoá Các thông tin bảng ký hiệu 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 g „ Kiểu liệu „ Phạm vi sử dụng „ Địa vùng nhớ,kích cỡ vùng nhớ „ „ „ 11 12 21/1/2010 Cấu trúc liệu enum symbol { nul, ident, number, plus,minus, times, slash, 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 ... phép Dấu ttoán: … số học + - */ … so sánh = != < > = Dấu phân cách ( ) : ; ( .) Dấu phép gán := Sau từ tố nhận biết, từ vựng lại quay lại trạng thái s0 Xử lý loại từ tố Các phép toán quan...21/1/2010 Các từ tố KPL „ „ „ „ „ „ „ Ôtômat hữu hạn PTTV Số nguyên Định danh Từ khóa: begin,end, if,then, while, do, call, const, var, procedure,... = 0; lexeme_beginning++; //chuyển trỏ đến đầu từ tố) } case 1: if(c= = '') state = 7; else state =fail();break;

Ngày đăng: 11/11/2015, 22:59

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan