Danh mục

Bài giảng Chương trình dịch: Bài giảng 6 - Nguyễn Phương Thái

Số trang: 35      Loại file: ppt      Dung lượng: 611.50 KB      Lượt xem: 11      Lượt tải: 0    
Thư viện của tui

Hỗ trợ phí lưu trữ khi tải xuống: 15,000 VND Tải xuống file đầy đủ (35 trang) 0
Xem trước 4 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 trình dịch - Bài giảng 6 trình bày về biên dịch dựa cú pháp. Các nội dung chính được trình bày trong bài giảng này gồm có: Cú pháp điều khiển, các loại thuộc tính, đồ thị phụ thuộc, lược đồ dịch, cú pháp điều khiển trong phân tích LL. Mời tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Chương trình dịch: Bài giảng 6 - Nguyễn Phương Thái NguyễnPhươngTháiBộmônKhoahọcMáytínhhttp://www.coltech.vnu.vn/~thainp/Nội dungCúphápđiềukhiểnCácloạithuộctínhĐồthịphụthuộcLượcđồdịchCúphápđiềukhiểntrongphântíchLLCú pháp điều khiểnCúphápđiềukhiển(syntaxdirecteddefinition):làmột dạngtổngquáthoácủavănphạmphingữcảnh,trong đómỗikýhiệuvănphạmcómộttậpthuộctínhđikèm, đượcchiathành2tậpconlàthuộctínhtổnghợp (synthesizedattribute)vàthuộctínhkếthừa(inherited attribute)củakýhiệuvănphạmđó.Mộtcâyphântíchcúphápcótrìnhbàycácgiátrịcủacác thuộctínhtạimỗinútđượcgọilàcâyphântíchcúpháp cóchúgiải(ngữnghĩa)(annotatedparsetree).Cú pháp điều khiển (tiếp)Địnhnghĩa: Trongmỗicúphápđiềukhiển,mỗisảnxuấtA> cóthể đượcliênkếtvớimộttậpcácquitắcngữnghĩacódạng b=f(c1,...,ck)vớiflàmộthàmvà blàmộtthuộctínhtổnghợpcủaA,cònc1,...,cklàcác thuộctínhcủacáckýhiệutrongsảnxuấtđó.Hoặc blàmộtthuộctínhkếthừacủamộttrongnhữngkýhiệu ởvếphảicủasảnxuất,cònc1,...,cklàthuộctínhcủa cáckýhiệuvănphạm.Ví dụ về thuộc tính tổng hợpSảnxuất LuậtngữnghĩaL>En Print(E.val)E>E1+T E.val=E1.val+T.valE>T E.val=T.valT>T1*F T.val=T1.val*F.valT>F T.val=F.valF>(E) F.val=E.valF>digit F.val=digit.lexval F1.val=3(syntax:F1>3semantic: F1.val=3.lexical) L F2.val=4(syntax:F2>3semantic: E1 n F2.val=4.lexical) T2.val=3(syntax:T2>F1semantic:T2.val=F1.val) E2 + T3 T1.val=3*4=12(syntax:T1>T2*F2semantic: T1.val=T2.val*F2.val) T1 F3 F3.val=4(syntax:F3>4semantic:T2 * F2 4 F3.val=4.lexical)F1 T3.val=4(syntax:T3>F3semantic:T3.val=F3.val) 4 E1.val=12+4=16(syntax:E1>E2+T3semantic:3 E1.val=E2.val+T3.val) “16”(syntax:L>E1nsemantic:print(E1.val))Câu vào “3*4+4”Ví dụ về thuộc tính kế thừaSảnxuất LuậtngữnghĩaD>TL L.in:=T.typeT>int T.type:=intergerT>real T.type:=realL>L1,id L1.in:=L.in;addtype(id.entry,L.in)L>id addtype(id.entry,L.in) Chúngtaduyệtvàthựchiệncáchànhđộngngữ nghĩatheochiềusâuvàtừtráisangphải.sẽ cókếtquảlầnlượtnhưsau: T.type=interger(syntax:T>intsemantic: D T.type=interger) L1.in=interger(syntax:D>TL1semantic: T L1 L1.in=T.type) L2.in=interger(syntax:L1>L2,a semantic:L2.in=L1.in) int L2 , a a.entry=interger(syntax:L1>L2,asemantic: addtype(a.entry,L1.in)) L3 , b L3.in=interger(syntax:L2>L3,b semantic:L3.in=L2.in) b.entry=interger(syntax:L2>L3,bsemantic: c addtype(b.entry,L2.in)) c.entry=interger(syntax:L3>csemantic: addtype(c.entry,L3.in))Câu vào “int c, b, a”Đồ thị phụ thuộcNếumộtthuộctínhbtạimộtnúttrongcâyphântíchcú phápphụthuộcvàomộtthuộctínhc,thìhànhđộngngữ nghĩachobtạinútđóphảiđượcthựchiệnsaukhithực hiệnhànhđộngngữnghĩachoc.Sựphụthuộcqualại củacácthuộctínhtổnghợpvàkếthừatạicácnúttrong mộtcâyphântíchcúphápcóthểđượcmôtảbằngmột đồthịcóhướnggọilàđồthịphụthuộc(dependency graph).Đồ thị phụ thuộc (tiếp) formỗinútntrongcâyphântíchcúphápdo formỗithuộctínhacủakýhiệuvănphạmtạindo xâydựngmộtnúttrongđồthịphụthuộcchoa; formỗinútntrongcâyphântíchcúphápdo formỗihànhđộngngữnghĩab:=f(c1,c2,...,ck) đikèmvớisảnxuấtđượ ...

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