Bài giảng Chương trình dịch: Bài giảng 7 - Nguyễn Phương Thái
Số trang: 20
Loại file: ppt
Dung lượng: 442.50 KB
Lượt xem: 10
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài 7 của bài giảng Chương trình dịch trang bị cho người học những kiến thức về phân tích ngữ nghĩa. Trong bài giảng này sẽ giới thiệu một số nội dung như: Biểu thức kiểu, hệ thống kiểu, luật ngữ nghĩa kiểm tra kiểu. Cùng tham khảo bài giảng để nắm bắt các nội dung chi tiết.
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 7 - Nguyễn Phương Thái NguyễnPhươngTháiBộmônKhoahọcMáytínhhttp://www.coltech.vnu.vn/~thainp/Nội dungBiểuthứckiểuHệthốngkiểuLuậtngữnghĩakiểmtrakiểuGiới thiệuMôđunphântíchngữnghĩa:kiểmtratínhđúngđắnvề mặtngữnghĩacủachươngtrìnhnguồnViệckiểmtrađượcchialàmhailoại: kiểmtratĩnh kiểmtrađộng(kiểmtrađộngxảyralúcchươngtrìnhđích chạy)Trongbàigiảngnàytachỉxétmộtsốdạngcủakiểmtra tĩnhGiới thiệu (tiếp)kiểmtrakiểu:kiểmtravềtínhđúngđắncủacáckiểutoánhạng trongbiểuthức.kiểmtradòngđiềukhiển:mộtsốđiềukhiểnphảicócấutrúchợp lý,vídụnhưlệnhbreaktrongngônngữCphảinằmtrongmột vònglặp.kiểmtratínhnhấtquán:cónhữngngữcảnhmàtrongđómộtđối tượngđượcđịnhnghĩachỉđúngmộtlần.Vídụ,trongPascal,một tênphảiđượckhaibáoduynhất,cácnhãntronglệnhcasephải khácnhau,vàcácphầntửtrongkiểuvôhướngkhôngđượclặp lại.kiểmtraquanhệtên:Đôikhimộttênphảixuấthiệntừhailầntrở lên.Vídụ,trongAssembly,mộtchươngtrìnhconcómộttênmà chúngphảixuấthiệnởđầuvàcuốicủachươngtrìnhconnày.Biểu thức kiểuKiểucủamộtcấutrúcngônngữđượcbiểuthịbởi “biểuthứckiểu”Mộtbiểuthứckiểucóthểlà: mộtkiểucơbản kiểuhợpthành:đượcxâydựngtừcáckiểucơbảntheo mộtsốtoántửnàođóKiểu cơ bảnboolean,char,interger,realtype_error:mộtkiểucơbảnđặcbiệtdùngđểtrảvề mộtcấutrúcbịlỗikiểuvoid:mộtkiểucơbảnđặcbiệtkhác,biểuthịcáccấu trúckhôngcầnxácđịnhkiểunhưcâulệnhKiểu hợp thànhMảng.NếuTlàmộtbiểuthứckiểuthìarray(I,T)làmột biểuthứckiểuđốivớimộtmảngcácphầntửkiểuTvà Ilàtậpcácchỉsố. Vídụ,trongngônngữPascalkhaibáo: varA:array[1..10]ofinterger; sẽxácđịnhkiểucủaAlàarray(1..10,interger)Tíchcủabiểuthứckiểulàmộtbiểuthứckiểu.NếuT1 vàT2làcáckiểubiểuthứckiểuthìtíchĐềcáccủaT1xT2 làmộtbiểuthứckiểu.Kiểu hợp thành (tiếp)Bảnghi.Kiểucủamộtbảnghichínhlàbiểuthứckiểu đượcxâydựngtừcáckiểucủacáctrườnghợpcủanó.Vídụ(ngônngữPascal): typerow=record address:interger; lexeme:array[1..15]ofchar; end; vartable:array[1..101]ofrow; nhưvậymộtbiếncủarowthìtươngứngvớimộtbiểuthứckiểu là:record((addressxinterger)x(lexemexarray(1..15,char)))Kiểu hợp thành (tiếp)Contrỏ.GiảsửTlàmộtbiểuthứckiểuthìpointer(T)là mộtbiểuthịmộtbiểuthứckiểuxácđịnhkiểuchocon trỏcủamộtđốitượngkiểuT.Vídụ(ngônngữPascal): varp:^row thìpcókiểulàpointer(row)Kiểu hợp thành (tiếp)Hàm.Mộthàmlàmộtánhxạtừcácphầntửcủamột tậpvàomộttậpkhác.Nhưvậycóthểcoikiểumộthàm làánhxạtừmộtkiểumiềnDvàomộtkiểuphạmviR. Biểuthứckiểuchomộthàmnhưvậysẽđượckýhiệu làD>R.Vídụ(ngônngữPascal),mộthàmkhaibáonhưsau: functionf(a,b:interger):^interger; cókiểumiềnlàintergerxintergervàkiểuphạmvilà pointer(interger).Vànhưvậybiểuthứckiểuxácđịnh kiểuchohàmđólà: intergerxinterger>pointer(interger)Hệ thống kiểuHệthốngkiểu:làmộttậpcácluậtđểxácđịnhkiểucho cácphầntrongchươngtrìnhnguồnBộkiểmtrakiểu:làmnhiệmvụthựcthicácluậttrong hệthốngkiểuKỹthuật:cúphápđiềukhiểnvàlượcđồdịchMột số luật ngữ nghĩa kiểm trakiểuTasẽxétmộtsốvídụChúý: đốivớicâulệnhkhôngcógiátrị,tacóthểgánchonókiểu cơsởđặcbiệtvoid nếucólỗivềkiểuđượcpháthiệntrongcâulệnhthìta gánchonógiátrịkiểulàtype_errorPhần khai báo của chương trìnhD>id:TT>intergerT>charT>^TT>array[num]ofT Luậtcúpháp Luậtngữnghĩa D>id:T AddType(id.entry,T.type); D.type:=void T>char T.type:=char T>interger T.type:=interger T>^T1 T.type:=pointer(T1.type)T>array[num]ofT1 T.type:=array(num.val,T1.type)Biểu thứcS>id:=EE>E+EE>EmodEE>E1[E2]E>numE>idLuậtcúpháp Luậtngữnghĩa S>id:=E S.type:=ifid.type=E.typethenvoid elsetype_error; AddType(id.entry,E.type) E>E1+E2 E.type:= ifE1.type=intergerandE2.type=intergerthen interger elseifE1.type=intergerandE2.type=realthenreal elseifE1.type=realandE2.type=intergerthenreal elseifE1.type=realandE2.type=realthenreal elsetype_error E>num E.type:=interger E>id ...
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 7 - Nguyễn Phương Thái NguyễnPhươngTháiBộmônKhoahọcMáytínhhttp://www.coltech.vnu.vn/~thainp/Nội dungBiểuthứckiểuHệthốngkiểuLuậtngữnghĩakiểmtrakiểuGiới thiệuMôđunphântíchngữnghĩa:kiểmtratínhđúngđắnvề mặtngữnghĩacủachươngtrìnhnguồnViệckiểmtrađượcchialàmhailoại: kiểmtratĩnh kiểmtrađộng(kiểmtrađộngxảyralúcchươngtrìnhđích chạy)Trongbàigiảngnàytachỉxétmộtsốdạngcủakiểmtra tĩnhGiới thiệu (tiếp)kiểmtrakiểu:kiểmtravềtínhđúngđắncủacáckiểutoánhạng trongbiểuthức.kiểmtradòngđiềukhiển:mộtsốđiềukhiểnphảicócấutrúchợp lý,vídụnhưlệnhbreaktrongngônngữCphảinằmtrongmột vònglặp.kiểmtratínhnhấtquán:cónhữngngữcảnhmàtrongđómộtđối tượngđượcđịnhnghĩachỉđúngmộtlần.Vídụ,trongPascal,một tênphảiđượckhaibáoduynhất,cácnhãntronglệnhcasephải khácnhau,vàcácphầntửtrongkiểuvôhướngkhôngđượclặp lại.kiểmtraquanhệtên:Đôikhimộttênphảixuấthiệntừhailầntrở lên.Vídụ,trongAssembly,mộtchươngtrìnhconcómộttênmà chúngphảixuấthiệnởđầuvàcuốicủachươngtrìnhconnày.Biểu thức kiểuKiểucủamộtcấutrúcngônngữđượcbiểuthịbởi “biểuthứckiểu”Mộtbiểuthứckiểucóthểlà: mộtkiểucơbản kiểuhợpthành:đượcxâydựngtừcáckiểucơbảntheo mộtsốtoántửnàođóKiểu cơ bảnboolean,char,interger,realtype_error:mộtkiểucơbảnđặcbiệtdùngđểtrảvề mộtcấutrúcbịlỗikiểuvoid:mộtkiểucơbảnđặcbiệtkhác,biểuthịcáccấu trúckhôngcầnxácđịnhkiểunhưcâulệnhKiểu hợp thànhMảng.NếuTlàmộtbiểuthứckiểuthìarray(I,T)làmột biểuthứckiểuđốivớimộtmảngcácphầntửkiểuTvà Ilàtậpcácchỉsố. Vídụ,trongngônngữPascalkhaibáo: varA:array[1..10]ofinterger; sẽxácđịnhkiểucủaAlàarray(1..10,interger)Tíchcủabiểuthứckiểulàmộtbiểuthứckiểu.NếuT1 vàT2làcáckiểubiểuthứckiểuthìtíchĐềcáccủaT1xT2 làmộtbiểuthứckiểu.Kiểu hợp thành (tiếp)Bảnghi.Kiểucủamộtbảnghichínhlàbiểuthứckiểu đượcxâydựngtừcáckiểucủacáctrườnghợpcủanó.Vídụ(ngônngữPascal): typerow=record address:interger; lexeme:array[1..15]ofchar; end; vartable:array[1..101]ofrow; nhưvậymộtbiếncủarowthìtươngứngvớimộtbiểuthứckiểu là:record((addressxinterger)x(lexemexarray(1..15,char)))Kiểu hợp thành (tiếp)Contrỏ.GiảsửTlàmộtbiểuthứckiểuthìpointer(T)là mộtbiểuthịmộtbiểuthứckiểuxácđịnhkiểuchocon trỏcủamộtđốitượngkiểuT.Vídụ(ngônngữPascal): varp:^row thìpcókiểulàpointer(row)Kiểu hợp thành (tiếp)Hàm.Mộthàmlàmộtánhxạtừcácphầntửcủamột tậpvàomộttậpkhác.Nhưvậycóthểcoikiểumộthàm làánhxạtừmộtkiểumiềnDvàomộtkiểuphạmviR. Biểuthứckiểuchomộthàmnhưvậysẽđượckýhiệu làD>R.Vídụ(ngônngữPascal),mộthàmkhaibáonhưsau: functionf(a,b:interger):^interger; cókiểumiềnlàintergerxintergervàkiểuphạmvilà pointer(interger).Vànhưvậybiểuthứckiểuxácđịnh kiểuchohàmđólà: intergerxinterger>pointer(interger)Hệ thống kiểuHệthốngkiểu:làmộttậpcácluậtđểxácđịnhkiểucho cácphầntrongchươngtrìnhnguồnBộkiểmtrakiểu:làmnhiệmvụthựcthicácluậttrong hệthốngkiểuKỹthuật:cúphápđiềukhiểnvàlượcđồdịchMột số luật ngữ nghĩa kiểm trakiểuTasẽxétmộtsốvídụChúý: đốivớicâulệnhkhôngcógiátrị,tacóthểgánchonókiểu cơsởđặcbiệtvoid nếucólỗivềkiểuđượcpháthiệntrongcâulệnhthìta gánchonógiátrịkiểulàtype_errorPhần khai báo của chương trìnhD>id:TT>intergerT>charT>^TT>array[num]ofT Luậtcúpháp Luậtngữnghĩa D>id:T AddType(id.entry,T.type); D.type:=void T>char T.type:=char T>interger T.type:=interger T>^T1 T.type:=pointer(T1.type)T>array[num]ofT1 T.type:=array(num.val,T1.type)Biểu thứcS>id:=EE>E+EE>EmodEE>E1[E2]E>numE>idLuậtcúpháp Luậtngữnghĩa S>id:=E S.type:=ifid.type=E.typethenvoid elsetype_error; AddType(id.entry,E.type) E>E1+E2 E.type:= ifE1.type=intergerandE2.type=intergerthen interger elseifE1.type=intergerandE2.type=realthenreal elseifE1.type=realandE2.type=intergerthenreal elseifE1.type=realandE2.type=realthenreal elsetype_error E>num E.type:=interger E>id ...
Tìm kiếm theo từ khóa liên quan:
Chương trình dịch Bài giảng Chương trình dịch Phân tích ngữ nghĩa Biểu thức kiểu Hệ thống kiểu Kiểm tra kiểuTài liệu cùng danh mục:
-
Tìm hiểu về lỗi tràn bộ đệm (Buffer Overflow)
5 trang 364 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán trên C++
74 trang 345 0 0 -
Bài giảng Phân tích thiết kế phần mềm: Chương 7 - Trường ĐH Ngoại ngữ - Tin học TP.HCM
16 trang 335 0 0 -
180 trang 274 0 0
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 253 0 0 -
173 trang 248 2 0
-
Bài giảng Phân tích thiết kế và giải thuật - Chương 2: Kỹ thuật thiết kế giải thuật
80 trang 245 0 0 -
Kiến thức phần cứng máy tính - Sửa chữa nâng cấp và cài đặt máy tính xách tay Tập 2
483 trang 243 3 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 243 0 0 -
Bài giảng Phân tích thiết kế phần mềm: Chương 6 - Trường ĐH Ngoại ngữ - Tin học TP.HCM
12 trang 240 0 0
Tài liệu mới:
-
7 trang 0 0 0
-
6 trang 0 0 0
-
24 trang 1 0 0
-
48 trang 0 0 0
-
Đề thi học kì 1 môn Toán lớp 6 năm 2024-2025 có đáp án - Trường THCS Nguyễn Trãi, Núi Thành
24 trang 0 0 0 -
Cập nhật về điều trị Helicobacter pylori
11 trang 1 0 0 -
9 trang 0 0 0
-
105 trang 0 0 0
-
110 trang 0 0 0
-
110 trang 0 0 0