intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Ti Vu | Ngày: | Loại File: PDF | Số trang:4

47
lượt xem
1
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

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

21/1/2010<br /> <br /> Nhiệm vụ của bộ phân tích từ vựng<br /> „<br /> <br /> Phát hiện các từ tố<br /> <br /> „<br /> <br /> Bỏ qua các ký tự không cần thiết<br /> <br /> Bài 5<br /> Bộ phân tích từ vựng<br /> …<br /> …<br /> …<br /> …<br /> <br /> Khoảng trống<br /> Dấu tab<br /> Ký tự xuống dòng (CR,LF)<br /> Chú thích<br /> <br /> 1<br /> <br /> Từ tố có cấu trúc cú pháp<br /> <br /> 2<br /> <br /> Xử lý các luật từ vựng trong bộ phân tích cú pháp ?<br /> „<br /> <br /> Làm cho bộ phân tích cú pháp trở nên quá<br /> phức tạp<br /> … Phân<br /> <br /> biệt tên và từ khoá<br /> có những luật phức tạp để xử lý chuỗi<br /> các ký tự không cần thiết (khoảng trống, tab,<br /> chú thích . . . .)<br /> <br /> … Phải<br /> <br /> „<br /> <br /> Tại sao không xử lý các luật này trong giai<br /> đoạn phân tích cú pháp ?<br /> 3<br /> <br /> 4<br /> <br /> 1<br /> <br /> 21/1/2010<br /> <br /> Các từ tố của KPL<br /> „<br /> „<br /> „<br /> „<br /> „<br /> <br /> „<br /> <br /> „<br /> <br /> Ôtômat hữu hạn của bộ PTTV<br /> <br /> Số nguyên<br /> Định danh<br /> Từ khóa: begin,end, if,then, while, do, call, const, var, procedure,<br /> program,type, function,of,integer,char,else,for, to,array<br /> Hằng ký tự<br /> Dấ phép<br /> Dấu<br /> hé ttoán:<br /> á<br /> … số học<br /> + - */<br /> … so sánh<br /> =<br /> !=<br /> <<br /> > =<br /> Dấu phân cách<br /> ( ) . : ; (. .)<br /> Dấu phép gán :=<br /> <br /> Sau mỗi từ tố được nhận biết, bộ từ vựng lại quay lại trạng thái s0<br /> <br /> 5<br /> <br /> Xử lý các loại từ tố<br /> <br /> 6<br /> <br /> Các phép toán quan hệ<br /> case 0 : c= nextchar();<br /> if(c==blank || c= =tab || c= =newline ){<br /> state = 0;<br /> lexeme_beginning++;<br /> //chuyển con trỏ đến đầu từ tố)<br /> }<br /> case 1:<br /> if(c= = '') state = 7;<br /> else state =fail();break;<br /> case 1a: c:=nextchar();<br /> if (c= = '=') state = 2;<br /> Else state=3;<br /> case 2: return (leq)<br /> <br /> switch(state)<br /> {<br /> case 0 // Bỏ qua khoảng trống<br /> case 1// Xử lý các phép toán quan hệ<br /> case 10<br /> // Xử lý tên<br /> case 13<br /> // Xử lý số<br /> ...<br /> }<br /> 7<br /> <br /> 8<br /> <br /> 2<br /> <br /> 21/1/2010<br /> <br /> Số nguyên<br /> <br /> Định danh<br /> case 13: c = nextchar();<br /> if(isdigit(c)) state = 14;<br /> case 14: cc=nextchar();<br /> nextchar();<br /> if(isdigit(c)) state = 14;<br /> else state = 15; break;<br /> case 15 : retract(1);<br /> install_num();<br /> return(num);<br /> <br /> case 10:<br /> c = nextchar();<br /> if(isletter(c)) state =11;<br /> else state = fail; break;<br /> case 11:<br /> c = nextchar();<br /> if(isletter(c)) state =11;<br /> else if (isdigit(c)) state = 11;<br /> else state = 12; break;<br /> case 12: retract(1) ;<br /> install_id();<br /> return (gettoken());<br /> <br /> 9<br /> <br /> 10<br /> <br /> Xử lý tên / từ khoá<br /> <br /> Các thông tin trong bảng ký hiệu<br /> Tên: xâu ký tự<br /> Thuộc tính: tên kiểu,tên biến, tên thủ tục,<br /> tên hằng.<br /> g ..<br /> „ Kiểu dữ liệu<br /> „ Phạm vi sử dụng<br /> „ Địa chỉ vùng nhớ,kích cỡ vùng nhớ<br /> „...<br /> „<br /> „<br /> <br /> 11<br /> <br /> 12<br /> <br /> 3<br /> <br /> 21/1/2010<br /> <br /> Cấu trúc dữ liệu<br /> enum symbol<br /> {<br /> nul, ident, number,<br /> plus,minus, times, slash,<br /> eql,neq, lss,leq,grt,geq,<br /> lparen, rparen, comma, semicolon, period, becomes,<br /> quote, colon,<br /> lsquare,rsquare,<br /> beginsym, endsym, ifsym,thensym, whilesym,dosym,<br /> callsym,constsym,varsym,procsym,programsym,typesym,<br /> funcsym,ofsym,integersym,charsym,elsesym,forsym,<br /> tosym, arraysym<br /> };<br /> 13<br /> <br /> 4<br /> <br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD


ERROR:connection to 10.20.1.100:9315 failed (errno=111, msg=Connection refused)
ERROR:connection to 10.20.1.100:9315 failed (errno=111, msg=Connection refused)

 

Đồng bộ tài khoản
2=>2