Báo cáo đề tài: Cú pháp và ngữ nghĩa trong ngôn ngữ lập trình
Trang 1 ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KHOA HỌC MÁY TÍNH
BÀI BÁO CÁO
p trình
tài: Cú pháp và ng ng lp trình
Giảng viên: Ths.Trnh Qu
Nhóm sinh viên:
Phm Qut MSSV:11520529
601
TP H Chí Minh 11/2013
Báo cáo đề tài: Cú pháp và ngữ nghĩa trong ngôn ngữ lập trình
Trang 1
Báo cáo đề tài: Cú pháp và ngữ nghĩa trong ngôn ngữ lập trình
Trang 2
Lời cảm ơn
Trên thực tế không có sự thành công nào mà không gắn liền với những sự hỗ trợ,
giúp đỡ dù ít hay nhiều, dù trực tiếp hay gián tiếp của người khác. Trong suốt thời
gian từ khi bắt đầu học tập ở giảng đường đại học đến nay chúng em đã nhận được rất
nhiều sự quan tâm, giúp đỡ của quý Thầy Cô, gia đình và bạn bè.
Với lòng biết ơn sâu sắc nhất, em xin gửi đến quý Thầy Cô ở Khoa Khoa Học Máy
Tính – Trường Đại Học Công Nghệ Thông Tin đã cùng với tri thức và tâm huyết của
mình để truyền đạt vốn kiến thức quý báu cho chúng em trong suốt thời gian học tập tại
trường. Và đặc biệt, trong học kỳ này, Khoa đã tổ chức cho chúng em được tiếp cận với
môn học mà theo em là rất hữu ích đối với sinh viên ngành Khoa Học Máy Tính cũng
như tất cả các sinh viên thuộc các chuyên ngành Khoa Học Kĩ Thuật khác. Đó là môn
học “Nguyên Lý và Phương pháp lập trình”.
Em xin chân thành cảm ơn thầy Ths.Trịnh Quốc Sơn đã tận tâm hướng dẫn chúng em
qua từng buổi học trên lớp cũng như những buổi nói chuyện, thảo luận về đề tài . Nếu
không có những lời hướng dẫn, dạy bảo của thầy thì em nghĩ đè tài này chúng em rất
khó có thể hoàn thiện được. Một lần nữa,chúng em xin chân thành cảm ơn thầy.
TP H Chí Minh 11/2013
(Nhóm sinh viên thực hiên)
.
.
Báo cáo đề tài: Cú pháp và ngữ nghĩa trong ngôn ngữ lập trình
Trang 4 I. CÚ PHÁP VÀ NGỮ NGHĨA
Ngôn ng lp trình là h thng gm các ký hiu và các qui tc kt hp các ký hiu
thành các c lp trình cung cp m
mô t mt thut toán mà máy tính có th hic nó.
Trang 5 Ví dụ 3: Ta xét biu thc sau
Biu thc 1=4
Biu thc 2=1+3
Biu thc 3=1+1+1+1
C 3 biu thu có cùng giá tr, tc là ging nhau v mt ngữ nghĩa tuy nhiên
chúng khác nhau v mt cú pháp
Ví dụ 4:
C: if (x > y) x = x-1; else y ;
Pascal: if x > y then x := x-1 else y := y-1;
Nhận xét:
S khác nhau: du ngoc tròn x > y, t then, = hoc :=, Du chm phc
else,
V m mt ng ng nhau
Sự quan trọng của cú pháp:
Cú pháp chính xác, rõ ràng là rt quan trng; Nu bn không nh
trình ca bn không th chy
Trong mng; bn hc nó, bn sn
t thúc
a mt ngôn ng có ng rt ln:
o Làm th vit cách d dàng
o Làm th c và hi dàng
o Tht d to ra nhng li cú pháp khó hiu
Cú pháp là đánh máy (Syntax is typographical)
Cú pháp mô t cách chúng ta vit chui ký t
Cú pháp có th chính xác và chính thi BNF (Backus-Naur
Form)
Mt ngôn ng ng là mt chui các ký t (hoc âm thanh) và
Lit kê tt c các dng ca mi lp
Ví dụ:
-Lớp cú pháp
C Hng (constant)
O Toán t(operator)
E Biu thc (expression)
-Dạng cú pháp
E ::= C | E O E | ( E ) Ví dụ: cú pháp lp trng cho ngôn ng PASCAL. Các ký hiu cho lp cú pháp
B hng
O toán t
I danh hiu
L biu thc v trái
literal
Operater
identifier
l-expression
Báo cáo đề tài: Cú pháp và ngữ nghĩa trong ngôn ngữ lập trình
Trang 7 E biu thc
K biu thc
T biu thc kiu
P thông s hình thc
C lnh
P::=I:I | var I:I
D::=const I=K; l type I=T;| var I:T; |
Procedure Ifunction I
) | C;C |
If E then C l if E then C else C |
end |
While E do C l repeat C until E |
For I:=E to E do C | for I:=E downto E do C |
With L do begin C end | begin C end
M::=program I
Ưu điểm: ca cú pháp trn, cho thy mt cách nhìn khái quát v cu
trúc cú pháp ca ngôn ng
Nhược điểm:không cn ký hiu ca ngôn ng mà nó mô t, vi cú pháp tru
ng chúng ta không th c mt chui ký hiu có phi là m
hp l u trúc ca s kt hp các kí hiu trong chui
2.2 Cú pháp cụ thể (concrete syntax)
Báo cáo đề tài: Cú pháp và ngữ nghĩa trong ngôn ngữ lập trình
Trang 8 Cú pháp c th khc phc các m ca cú pháp trng.Nó cho
nh cu trúc kt hp ca chui ký hiu và cho bit chui ký hip l
hay không
m phi ng cnh( Context Free Grammars)
i Noam Chomsky gi
Language generators : miêu t
V w
Các ch in hoa A, B, C, D, E, và S ký hiu các bic dùng làm
ký hiu bu ).
Các ch nh a, b, c, d, e, ; các chsvà mt s ký hiu khác ký hiu cho các ký
hiu kt thúc.
Các ch in hoa X, Y, Z là các ký hiu có th là ký hiu kt thúc hoc bin.
Các ch Hi-lu din cho chui các ký hiu kt thúc và bin.
Ta s biu dim mt cách tóm tt bng cách chlit kê các lut sinh ca nó.
Nt sinh ca bim nào
ghi ngn g
Ví dụ 2: m trong Ví d.1 trên có th vit gn là :
Chúng ta qui ước:
Mô t m bng cách lit kê các lut sinh.
Lut sinh cha ký hiu bu s c liu tiên.
Nu có nhiu lut sinh có cùng v trái thì nhóm li thành mt lut sinh duy nht,
phi cách nhau bi ký hi
Ví dụ: t biu thc s hc (expression) bao gm các danh biu
(identifier) tham gia vào các phép toán +, * hoc biu thc con lng trong du ngo
, ta vit :
<expression> ::= <expression> + <expression> <expression> ::= <expression> *
<expression> <expression> ::= (<expression> )
<expression> ::= <identifier>
S aAS aSbAS aabAS aabbaS aabbaa
Ví dụ : xây dng cây phân tích cú pháp t dn xut.
E -E - (E) - (E + E) - (id + E) - (id + id)
Báo cáo đề tài: Cú pháp và ngữ nghĩa trong ngôn ngữ lập trình
Trang 11
Cây phân tích cú pháp minh ha ký hiu ca mm dn mt chui
trong ngôn ng.
Nu ký hit thúc A có lu
th có mt nút trong có nhãn A ng t trái qua phi
là X, Y,Z
Cây cú pháp (syntax - tree) là dng rút gn ca cây phân tích cú pháp
biu din cu trúc ngôn ng.
Trong cây cú pháp các toán t và t khóa không phi là nút lá mà là các nút trong.
Ví dụ: vi luc biu din bi cây cú pháp:
Mt kiu rút gn khác ca cây cú pháp là chui các luc rút gn li. Chng
hn ta có:
Sự mơ hồ (hay sự nhập nhằng) của văn phạm
Khái niệm: mm phi ng cc gm nhp nhng hay
còn g (ambiguity) nu nó có nhit cây dn xut cho cùng mt chui
Hoc
var x,y: real;
Begin
Báo cáo đề tài: Cú pháp và ngữ nghĩa trong ngôn ngữ lập trình
Trang 13 Hic tha nhn r nh nhng ràng
buc v ng cc dit mt cách không hình thc.
vic mô t không hình th và không chính xác.
III.NGỮ NGHĨA
Ng
ca biu thc, câu la cu trúc trong mt ngôn
ngc vit bi ngôn ng
Ng cho mi th,bn làm trong ngôn ng
Cú pháp ch mô t ng
a 1 ngôn ng lu so va cú pháp
Ng t ch cu trúc cú pháp (maps
syntactical) cho mô hình tính toán
Ng Mô hình tính toán (computational model)
Cách tiếp cận này gọi là ngữ nghĩa theo cú pháp
Ngữ nghĩa mức độ thấp (Low level semantics)
Ngữ nghĩa có thể ảnh hưởng đến mọi thứ ở mức rất thấp:
Ví dụ:
S dng ngôn ng sai
Vai trò của ngữ nghĩa ngôn ngữ lập trình (The Role of Programming Language
Semantics)
Báo cáo đề tài: Cú pháp và ngữ nghĩa trong ngôn ngữ lập trình
Trang 15
Nhng li th c
chch xác nh thành 1 hành vi chính thc
i vi ng ng hoàn toàn
Nhip cy và nhii không hiu rõ và không s
dng ph bin
u thú v là ng ng sau thc t mt ngôn ng hoc có th không
áp dng cho toàn b ngôn ng (ng hp v HTML và SGML)
a mt ngôn ng lp trình rõ ràng và chính xác, ng a ngôn
ng lc mô t mt cách hình thc.Ng c không ch là
cho vic chn c
thit k và thc hin ngôn ng lp trình
Một số ngữ nghĩa phổ biến bao gồm: ngữ nghĩa tĩnh (Static semantic) và ngữ nghĩa
động (Dynamic semantic)
Synthesized attributes
Attribute grammars
Natural semantics
Static semantic
Operational semantics
o M ph thuc vào máy
La chn tng máy tính hoàn chnh
Quá trình:
o Xây dng mt máy dch(dch mã ngun ti mã máy ca 1 máy tính lý
ng)
o Xây dng mt gi lng Máy rút gọn (reduction machine)
B u khin rút gn m tr ng a nó.
( 3 + 4 ) * 5 (7) * 5
7 * 5
35
Lut rút gn
8)
9)
10)
11)
12)
13)
14)
-list
stmt--
letter Cú pháp trừu tượng
1
2
1
2
| E
1
-
Env&{I = n} : thêm 1 ràng buc mng
(Env&{I=n})(J)=
Luật cho biểu thức
Báo cáo đề tài: Cú pháp và ngữ nghĩa trong ngôn ngữ lập trình
Trang 19 < E | Env > : biu thng Env
i các lut rút gn dùng dng biu din có chng Đánh giá ngữ nghĩa tác vụ:
o Tt nu s dng 1 cách không chính thng dn s dng ngôn ng
o Phc tp nu s dng 1 cách chính thc
5.2. Ngữ nghĩa biểu thị( Denotational semantics):
Báo cáo đề tài: Cú pháp và ngữ nghĩa trong ngôn ngữ lập trình
Trang 20 N [[101]] = 2* N [[10]] +1=2*2* N [[1]]+1 = 2*2*1+1=5
Ngôn ngữ lập trình đơn giản
n hóa v ta ch xét mt ngôn ng li n. Ngôn
ng này gm hai h, các du ngoc tròn
Hai phép toán:
mt toán h-
Hai toán hng là:
Các lnh ca ngôn ng gm lnh rng (null ) , lnh gán, các cu khi
bn (tun tu kin và lp), và lnh gi th tc (call). Th tng
lnh gán thân th tc vào các tê th tc. Tt c các danh hiu là
toàn ct danh hiu nhp- xut. D liu nhp c
khng cho danh hiu nhp-xut sau khi thc hi liu xut
c
Ví dụa ngôn ng ln
Program (x);
Begin
y:=x;
p:=(procedure x:=x+1)
if x=y then x:=x+(-1) else x:=0;
call p
end
Vi d liu nhp là mt s bt k, d li liu nhp lun lý s
gây ra l
Kí hiu:
Mô t phép thc hi i v
Có tt c ba hàm ng a biu thc, hàm ng a câu
lnh, và hàm ng a
Hàm ng a biu thc din dt biu thc ()
) , hàm ng E s cho giá tr ng ca biu thc
Hàm ng a câu lnh: cho bit lnh , kt qu ca hàm
ng mi
Hàm ng và giá tr nhp
, Hàm ng cho kt qu ct giá tr n)
Bảng Ngôn ngữ lập trình đơn giản
Cú pháp trừu tượng
I Ide
E Exp
C Com
M Pro
Danh hiu
Biu thc
Phát biu
Qui ước
E : Exp (S c vit là E : Exp S E
D i s ca hàm ng
Nu s là1 ánh xthì
Cú pháp ca ngôn ng c b sung thêm hai dt câu lnh m
sau:
D Def
D var I = E | const I = E
C | with D do C
Báo cáo đề tài: Cú pháp và ngữ nghĩa trong ngôn ngữ lập trình
Trang 23 Ví dụ:
x := 1;
with var x = 2 do begin
y := x+1;
x := 3;
end;
x1
x2
x 2, y 3
x 3, y 3
x 1, y 3 Ng ca ngôn ng vc trình bày b
Bảng ngữ nghĩa của ngôn ngữ với môi trường
(6) E [[E1=E2]] u s = (e1?T and e2?T) or (e1?Z and e2?Z) e1=e2, error
where ei = E [[Ei]] u s for i=1,2
(7) E [[I]] u s= d ? L s(d), d ? R d, error where d = u [[I]]
(8) E [[procedure C]] u s = C [[C]] u
(9) E [[(E)]] u s = E [[E]] u s
(10) D [[var I = E]] u s = e ? R and kL:s(k) = unused
(u[I e]), (u,error)
where e = E [[E]] u s
(11) D [[const I = E]] u s = e ? R (u[I e],s),(u,error) where e = E [[E]] u s
(12) C [[null] u s = s
(13) C [[I:=E]] u s = d ? L and e ? R s[d e], error
where d = u[[I]] and e = E [[E]] u s
(14) C [[call E]] u s = e ? P e(s), errorwhere e = E [[E]] u s
(15) C [[C1;C2]] u s = g ? S C [[C2]] u g, error where g = C [[C1]] u s
Báo cáo đề tài: Cú pháp và ngữ nghĩa trong ngôn ngữ lập trình
Trang 24 (16) C [[if E then C1 else C2]]s = E [[E]] u s C [[C1]] u s, C [[C2]] u s
(g?S
(18) C [[with D do C]] u s = g ? S C [[C
(19) C [[begin C end]] u s = C [[C]]u s
(20) M [[program (I); C]]b = g?S and g(k)?B g(k), error
where g = C [[C]](u [I s[k
and k is any location
u kin P2 gọi là yếu hơn P1 nếu P1=> P2. Tiu kin c t ca phát biu
càng yu, ng a phát biu càng rõ.
Ví dụ: