Danh mục

Bài giảng môn học Trình biên dịch - Chương 5: Trình biên dịch trực tiếp cú pháp

Số trang: 42      Loại file: pdf      Dung lượng: 195.13 KB      Lượt xem: 10      Lượt tải: 0    
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 5 trình bày những nội dung cơ bản như: Định nghĩa trực tiếp cú pháp, cấu trúc của cây phân tích, định nghĩa thuộc tính l, biên dịch từ trên xuống, đánh giá thuộc tính kế thừa từ dưới lên, đánh giá thuộc tính kế thừa từ dưới lên,... 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 5: Trình biên dịch trực tiếp cú phápCHÖÔNG 5BIEÂN DÒCH TRÖÏC TIEÁP CUÙ PHAÙPCoù hai khaùi nieäm veà caùc luaät ngöõ nghóa coù lieân quan ñeán luaät sinh:ñònh nghóa tröïc tieáp cuù phaùp vaø löôïc ñoà dòch.- Ñònh nghóa tröïc tieáp cuù phaùp.- Löôïc ñoà dòch.Chuoãi nhaäp → caây phaân tích → ñoà thò phuï thuoäc →→ ñaùnh giaù thöù töï caùc luaät ngöõ nghóa.Hình 5.0. Khaùi nieäm veà dòch tröïc tieáp cuù phaùpKhaùi nieäm toång quan cuûa bieân dòch tröïc tieáp cuù phaùp5.1. Ñònh nghóa tröïc tieáp cuù phaùpLaø vaên phaïm phi ngöõ caûnh maø trong ñoù moãi kyù hieäu vaên phaïm coù taäpthuoäc tính. Taäp thuoäc tính naøy coù hai loaïi: thuoäc tính toång hôïp vaøthuoäc tính keá thöøa.Caây cuù phaùp coù giaù trò thuoäc tính ôû moãi nuùt ñöôïc goïi laø caây phaân tíchchuù thích.Daïng cuûa ñònh nghóa tröïc tieáp cuù phaùpMoãi luaät sinh coù daïng A → α ñeàu coù moät taäp luaät ngöõ nghóa coù daïngb:= f (c1, c2, …, ck) vôùi f laø haøm soá vaø:1. b laø thuoäc tính toång hôïp cuûa A vaø c1, c2, …, ck laø caùc thuoäc tínhcuûa kyù hieäu vaên phaïm cuûa luaät sinh, hoaëc2. b laø thuoäc tính keá thöøa cuûa moät trong caùc kyù hieäu vaên phaïm beân veáphaûi cuûa luaät sinh vaø c1, c2, …, ck laø caùc thuoäc tính cuûa caùc kyù hieäu vaênphaïm cuûa luaät sinh.Thí duï 5.1. Ñònh nghóa tröïc tieáp cuù phaùp ôû baûng 5.1.Baûng 5.1. Ñònh nghóa tröïc tieáp cuù phaùp cho baûng tính ñôn giaûnLuaät sinhL → EnE → E1 + TE → TE.val: = T.valT → T1* FT → FT.val: = F.valF → (E)F → digitLuaät ngöõ nghóaPrint (E.val)E.val: = E1.val + T.valE.val: = T.valT.val: = T.val x F.valT.val: = F.valF.val: = E.valF.val: = digit . lexvalThuoäc tính toång hôïpÑònh nghóa tröïc tieáp cuù phaùp duøng caùc thuoäc tính toång hôïp goïi laø ñònhnghóa thuoäc tính S. Thuoäc tính S cuûa moät nuùt coù theå ñöôïc töø caùc thuoäctính ôû moãi nuùt töø döôùi leân.Thí duï 5.2. Ñònh nghóa thuoäc tính S ôû thí duï 5.1LE.val = 19E.val = 15+T.val = 15T.val = 3F.val = 3digit.lexval = 3*nT.val = 4F.val = 4F.val = 5digit.lexval = 4digit.lexval = 5Hình 5.1. Caây phaân tích chuù thích 3 * 5 + 4nThuoäc tính keá thöøaThuoäc tính keá thöøa laø thuoäc tính maø giaù trò cuûa noù ôû moät nuùt treân caâyphaân tích ñöôïc xaùc ñònh bôûi thuoäc tính cha meï vaø/hoaëc anh chò cuûa nuùtñoù.Thí duï 5.3. Söï khai baùo ñöôïc taïo bôûi kyù hieäu khoâng keát thuùc D trongñònh nghóa tröïc tieáp cuù phaùp ôû (baûng 5.2).Baûng 5.2. Ñònh nghóa tröïc tieáp cuù phaùp vôùi thuoäc tính keá thöøa L.in.Luaät sinhD → TLT → intT → realL → L1, idL → idLuaät ngöõ nghóaL.in: = T.typeT.type: = integerT.type: = realL1.in: = L.inAddtype (id.entry, L.in)

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