Danh mục

Bài giảng môn học Trình biên dịch - Chương 2: Trình biên dịch đơn giản

Số trang: 42      Loại file: pdf      Dung lượng: 199.24 KB      Lượt xem: 16      Lượt tải: 0    
Hoai.2512

Hỗ trợ phí lưu trữ khi tải xuống: 10,000 VND Tải xuống file đầy đủ (42 trang) 0

Báo xấu

Xem trước 5 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài giảng chương 2 trình bày những nội dung cơ bản như: Định nghĩa cú pháp, sự biên dịch trực tiếp cú pháp (syntax-directed translation), phân tích cú pháp, trình biên dịch cho biểu thức đơn giản, sự phân tích từ vựng, sự hình thành bảng danh biểu, máy trừu tượng kiểu chồng,... Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng môn học Trình biên dịch - Chương 2: Trình biên dịch đơn giảnCHÖÔNG 22.1. Toång quaùtChuoãi kyù töïTRÌNH BIEÂN DÒCH ÑÔN GIAÛNBoä phaân tích Chuoãi token Boä bieân dòch tröïc Maõ trung giantöø vöïngtieáp cuù phaùpHình 2.1. Caáu truùc trình bieân dòch “front end”2.2. Ñònh nghóa cuù phaùpVaên phaïm phi ngöõ caûnh (PNC) ñöôïc ñònh nghóa:G2 = (Vt, Vn, S, P)P : A → α1 | α2 |………|αnThí duï 2.1. Cho vaên phaïm G:P: list → list + digit| list – digit| digitdigit → 0 |1| 2 | …|9Thí duï 2.2. Vaên phaïm mieâu taû phaùt bieåu hoãn hôïp begin end cuûa PascalP : block → begin opt_stmts endopt_stmts → stmt_list |€stmt_list → stmt_list ; stmt | stmt- Caây phaân tíchSöï khoâng töôøng minhThí duï 2.3. Vaên phaïm G sau ñaây laø khoâng töôøng minh:P : string → string + string | string – string | 0 | 1 | ... |9Caâu 9 – 5 + 2 cho hai caây phaân tích:stringstringstring9string+-stringa)5string2string-string9string+5Hình 2.2 Hai caây phaân tích cuûa caâu 9 – 5 + 2b)string2Söï keát hôïp cuûa caùc toaùn töûMöùc öu tieân cuûa caùc toaùn töû: * vaø / coù möùc öu tieân hôn + , - . Döïa vaøonguyeân taéc treân chuùng ta xaây döïng cuù phaùp cho bieåu thöùc soá hoïc:exp → exp + term | exp – term | termterm → term * factor | term / factor | factorfactor → digit | ( exp )Löu yù: pheùp toaùn luõy thöøa vaø pheùp gaùn trong C laø pheùp toaùn keát hôïpphaûi. Vaên phaïm cho pheùp gaùn nhö sau:right → letter = right | letterletter → a | b | … | z2.3. Söï bieân dòch tröïc tieáp cuù phaùp (Syntax-Directed Translation)1. Kyù hieäu haäu toá1) Neáu E laø bieán hoaëc haèng soá thì kyù hieäu haäu toá cuûa E chính laø E.2) Neáu E laø bieåu thöùc coù daïng E1 op E2 vôùi op laø toaùn töû hai ngoâi thìkyù hieäu haäu toá cuûa E laø E1’ E2’ op.3) Neáu E laø bieåu thöùc coù daïng (E1) thì kyù hieäu haäu toá cuûa E1 cuõng laøkyù hieäu haäu toá cuûa E.Löu yù: Khoâng caàn coù daáu ñoùng, môû ngoaëc trong kyù hieäu haäu toá.2. Ñònh nghiaõ tröïc tieáp cuù phaùp (Syntax-directed definition)Vaên phaïm phi ngöõ caûnh vaø taäp luaät ngöõ nghiaõ seõ thieát laäp ñònh nghóatröïc tieáp cuù phaùp. Bieân dòch laø pheùp aùnh xaï töø nhaäp → xuaát. Daïngxuaát cuûa chuoãi nhaäp x ñöôïc xaùc ñònh nhö sau:1. Xaây döïng caây phaân tích cho chuoãi x.2. Giaû söû nuùt n cuûa caây phaân tích coù teân cuù phaùp X, X.a laø trò thuoäctính a cuûa X, ñöôïc tính nhôø luaät ngöõ nghóa. Caây phaân tích coù chuù thíchcaùc trò thuoäc tính ôû moãi nuùt ñöôïc goïi laø caây phaân tích chuù thíchToång hôïp thuoäc tính (synthesized attributes)Thí duï 2.4. Cho vaên phaïm G coù taäp luaät sinh P:Taäp luaät sinhTaäp luaät ngöõ nghóaexp → exp + termexp.t ::= exp.t || term.t || ‘+’exp → exp – termexp.t ::= exp.t || term.t || ‘-’exp → termexp.t ::= term.tterm → 0term.t ::= ‘0’……term → 9term.t ::= ‘9’exp.t ::= 95 – 2 +exp.t ::= 95 –exp.t ::= 9termt ::= 2termt.t ::= 5termt ::= 99-5+2Hình 2.3. Caây phaân tích chuù thích cho ñònh nghóa tröïc tieáp cuù phaùpLöôïc ñoà dòchLöôïc ñoà dòch laø vaên phaïm PNC, trong ñoù caùc ñoaïn chöông trình goïi laøhaønh vi ngöõ nghiaõ ñöôïc nhuùng vaøo veá phaûi cuûa luaät sinh.Thí duï 2.5. Löôïc ñoà dòch cuûa vaên phaïm G:

Tài liệu được xem nhiều: