1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Xây dựng chương trình dịch: Bài 5 - Nguyễn Thị Thu Hương

4 7 0

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

THÔNG TIN TÀI LIỆU

Nội dung

Bài giảng Xây dựng chương trình dịch - Bài 5: Bộ phân tích từ vựng trình bày các nội dung: Nhiệm vụ của bộ phân tích từ vựng, từ tố có cấu trúc cú pháp, các từ tố của KPL, xử lý các loại từ tố, các phép toán quan hệ, xử lý tên - Từ khóa, cấu trúc dữ liệu. Mời các bạn cùng tham khảo nội dung chi tiết.

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ừ khố 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ừ khố 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 ... 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... tố) } case 1: if(c= = '') state = 7; else state =fail();break; case 1a: c:=nextchar(); if (c= = '=')... 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ừ

Ngày đăng: 08/05/2021, 18:01

TỪ KHÓA LIÊN QUAN