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

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. nội dung chi tiết. | 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ỏ qua các ký tự không cần thiết Bài 5 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 1 Từ tố có cấu trúc cú pháp 2 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 biệt tên và từ khoá 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 . . . .) Phải 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 1 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ự Dấ phép Dấu hé ttoá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 Xử lý các loại từ tố 6 Các phép toán quan hệ case 0 : c= nextchar(); if(c==blank || c= =tab || c= =newline ){ state = 0; lexeme_beginning++; //chuyển con 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 0 // Bỏ qua khoảng trống case 1// Xử lý các phép toán quan hệ case 10 // Xử lý tên case 13 // Xử lý số . } 7 8 2 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()); 9 10 Xử lý tên / từ khoá Các thông tin trong bảng ký hiệu Tên: xâu ký tự Thuộc tính: tên kiểu,tên .

TỪ KHÓA LIÊN QUAN
crossorigin="anonymous">
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.