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

Bài giảng môn học Trình biên dịch - Chương 6: Xử lí ngữ nghĩa

Chia sẻ: Diên Vu | Ngày: | Loại File: PDF | Số trang:19

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

Xử lý ngữ nghĩa có hai cách: kiểm tra tĩnh (static check) và kiểm tra động (dynamic check). Trong chương này chúng ta chỉ bàn đến kiểm tra ngữ nghĩa tĩnh. Xử lý ngữ nghĩa tĩnh bao gồm: Truyền thuộc tính, kiểm tra kiểu, kiểm tra trình tự điều khiển, kiểm tra tính duy nhất, kiểm tra mối liên hệ của tên, xử lý các phát biểu goto tham khảo trước.

Chủ đề:
Lưu

Nội dung Text: Bài giảng môn học Trình biên dịch - Chương 6: Xử lí ngữ nghĩa

CHÖÔNG 6<br /> XÖÛ LYÙ NGÖÕ NGHÓA<br /> Xöû lyù ngöõ nghóa coù hai caùch: kieåm tra tónh (static check) vaø kieåm tra<br /> ñoäng (dynamic check).<br /> Trong chöông naøy chuùng ta chæ baøn ñeán kieåm tra ngöõ nghóa tónh.<br /> Xöû lyù ngöõ nghóa tónh bao goàm:<br /> 1. Truyeàn thuoäc tính<br /> 2. Kieåm tra kieåu<br /> 3. Kieåm tra trình töï ñieàu khieån<br /> 4. Kieåm tra tính duy nhaát<br /> 5. Kieåm tra moái lieân heä cuûa teân<br /> 6. Xöû lyù caùc phaùt bieåu goto tham khaûo tröôùc.<br /> <br /> chuoãi<br /> <br /> caây<br /> <br /> caây<br /> <br /> Boä phaân<br /> Boä xöû lyù<br /> token tích cuù phaùp cuù phaùp ngöõ nghóa cuù phaùp<br /> <br /> Sinh maõ<br /> trung<br /> gian<br /> <br /> maõ<br /> trung gian<br /> <br /> Hình 6.1. Vò trí cuûa boä xöû lyù ngöõ nghóa.<br /> 6.1. Truyeàn thuoäc tính<br /> 1. Maõ trung gian<br /> Maõ trung gian coù nhieàu loaïi: maõ cambridge, maõ Balan ngöôïc, maõ boä<br /> tam (triple code), maõ boä töù (quadruple code).<br /> Boä töù cho bieåu thöùc soá hoïc<br /> Daïng toång quaùt: (, , )<br /> Moät caùch bieåu thò bieán taïm ôû baûng danh bieåu:<br /> Teân:roãng<br /> Loaïi: 4<br /> Kieåu döõ lieäu: tuøy theo kieåu cuûa caùc toaùn haïng tham gia pheùp<br /> toaùn.<br /> Ñòa chæ : ñòa chæ töông ñoái. Ñòa chæ naøy ñöôïc gaùn khi sinh maõ.<br /> <br /> Moät soá maõ boä töù cho caùc pheùp toaùn hoïc<br /> JMP (i, 0, 0)<br /> nhaûy ñeán boä töù coù chæ soá i<br /> JPG (i, p1, p2) nhaûy ñeán boä töù i neáu toaùn haïng thöù nhaát<br /> lôùn hôn toaùn haïng hai<br /> as1 (p1, p2, 0) gaùn trò p1 cho p2. p2 laø bieán ñôn<br /> FLT (p1, p2, 0) Ñoåi trò cuûa p1 thaønh soá thöïc, gaùn sang p2<br /> FIX (p1, p2, 0) Ñoåi trò cuûa p1 thaønh soá nguyeân, gaùn sang p2<br /> 6.2. Xöû lyù ngöõ nghóa vôùi phaân tích cuù phaùp töø döôùi leân<br /> 1. Vaán ñeà truyeàn thuoäc tính<br /> Thí duï 6.1. Chuùng ta coù vaên phaïm G.<br /> → id := <br /> <br /> → + | <br /> <br /> → * | < factor><br /> < factor ><br /> → id | (< expr>)<br /> <br /> n12<br /> n11<br /> <br /> <br /> <br /> <br /> n10<br /> <br /> <br /> <br /> n9<br /> n8<br /> <br /> n2 <br /> n1 <br /> <br /> id1 :=<br /> <br /> id2<br /> <br /> * (<br /> <br /> n5 <br /> <br /> n7 <br /> <br /> n4 <br /> <br /> n6 <br /> <br /> n3 <br /> id3<br /> <br /> +<br /> <br /> id4<br /> <br /> Hình 6.2. Caây cuù phaùp A := X * (R + Q).<br /> <br /> )<br /> <br /> Token<br /> 1<br /> 2<br /> 3<br /> 4<br /> <br /> Baûng danh bieåu<br /> Trò töø vöïng Kieåu döõ lieäu<br /> <br /> id<br /> id<br /> id<br /> id<br /> <br /> A<br /> X<br /> R<br /> Q<br /> <br /> thöïc<br /> thöïc<br /> thöïc<br /> thöïc<br /> <br /> - Truyeàn thuoäc tính<br /> - Sinh ra bieán taïm khi thu giaûm<br /> 2. Phöông phaùp thöïc hieän söï truyeàn thuoäc tính<br /> Ñeå thöïc hieän xöû lyù ngöõ nghóa trong quaù trình phaân tích cuù phaùp, chuùng<br /> ta seõ duøng moät stack ñaëc bieät goàm caùc phaàn:<br /> A: kyù hieäu vaên phaïm (töôïng tröng cho moät danh hieäu)<br /> B: coù trò 0 hoaëc 1 (kyù hieäu 1 laø bieán taïm)<br /> C: con troû chæ ñeán baûng danh bieåu (thöïc chaát laø vò trí cuûa danh<br /> bieåu ôû trong baûng danh bieåu<br /> <br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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