21/1/2010
1
Bài 10
Phân tích ngnghĩa
Phân
tích
ng
nghĩa
Ni dung
Nhng vn đề ng nghĩa
Kim tra kiu (Type checking)
Hthng kiu trong ngôn nglptrình
H
thng
kiu
trong
ngôn
ng
lp
trình
Đặc t mt b kim tra kiu
Chuyn đổi kiu
Bng ký hiu
Lut v phm vi nh hưởng ca biến
Các sơ đồ dch để xây dng bng ký hiu
Phân tích ng nghĩa
Tìm ra các li sau giai đon phân tích cú pháp
Kim tra s tương ng v kiu
Kim tra s tương ng gia vic s dng hàm, biến
ikh ibá
v
i
kh
a
i
o c
a c
ng
Xác định phm vi nh hưởng ca các biến trong
chương trình
Phân tích ng nghĩa thường s dng cây
pháp
Khái nim kim tra kiu
Kim tra xem chương trình có tuân theo
các lut v kiu ca ngôn ng không
Trình biên dch qun thông tin vkiu
Trình
biên
dch
qun
thông
tin
v
kiu
Vic kim tra kiu được thc hin bi b
kim tra kiu (type checker), mt b phn
ca trình biên dch
21/1/2010
2
Ví d v kim tra kiu
Toán t % ca C ch thc hin khi các
toán hng là s nguyên
Ch mng micóchs kiucach
Ch
mng
mi
ch
s
kiu
ca
ch
s phi nguyên
Mt hàm phi có mt s lượng tham s
nht định và các tham s phi đúng kiu
Kim tra kiu
Có hai phương pháp tĩnh và động
Phương pháp áp dng trong thi gian dch là
tĩnh
Trong các ngôn ng như C hay Pascal, kim tra
kiulàtĩnh được dùng để kim tra tính đúng
kiu
tĩnh
được
dùng
để
kim
tra
tính
đúng
đắn ca chương trình trước khi nó đươc thc
hin
Kim tra kiu tĩnh cũng được s dng khi xác
định dung lượng b nh cn thiết cho các biến
B kim tra kiu được xây dng da trên
Các biu thc kiu ca ngôn ng
B lut để định kiu cho các cu trúc
Biu thc kiu (Type Expression)
Biu din kiu ca mt cu trúc ngôn ng
Mt biu thc kiu là mt kiu d liu chun
hoc được xây dng t các kiu d liu khác
bi cu trúc kiu (Type Constructor)
1.Kiu d liu chun (int, real, boolean, char) là biu
thc kiu
2.Biu thc kiu có th liên h vi mt tên. Tên kiu là
biu thc
3. Cu trúc kiu được ng dng vào các biu thc kiu
to ra biu thc kiu
Cu trúc kiu
(a)Mng (Array).Nếu T là biu thưc kiu thì array(I,T) là biu thc kiu biu
din mt mng vi các phn t kiu T và ch s trong min I
Ví d : array [10] of integer có kiu array(1..10,int);
1
T
2
các biuthckiu thì tích Descarter T1
×
T2
1
T
2
các
biu
thc
kiu
thì
tích
Descarter
T1
×
T2
là biu thc kiu
(c) Bn ghi (Record) Tương t như tích Descarter nhưng cha các tên khác
nhau cho các kiu khác nhau,
Ví d
struct
{
double r;
int i;
}
Có kiu ((r x int) x (i x char))
21/1/2010
3
Cu trúc kiu (tiếp)
(d) Con tr: Nêu T là biu thc kiu thì pointer(T)
là biu thc kiu
(e) Hàm Nếu D là min xác định và R là min giá
tr ca hàm thì kiu ca nó được biu din là
biu_ thc : D : R.
Ví d hàm ca C
int f(char a, b)
Có kiu: char ×char : int.
H thng kiu (Type System)
Tp các lut để xây dng các biu thc
kiu trong nhng phn khác nhau ca
chương trình
Đ
ược định nghĩa thông qua định nghĩa ta
cú pháp
B kim tra kiu thc hin mt h thng
kiu
Ngôn ng định kiu mnh: Chương trình
dch kim soát được hết các li v kiu
Đặc t mt b kim tra kiu
Ngôn ng đơn gin vi mi tên được liên
kết vi mt kiu
Vănphmthuc tính để khai báo biu
Văn
phm
thuc
tính
để
khai
báo
biu
thc
P D;E
D D;D | id : T
T char | int | array[num] of T | T
E literal | num | id | E mod E | E[E] | E
Thuc tính
Thuctínhlàkháinimtrutượng biudinmtđại
lượng btk,chng hnmts,mt xâu, mtvtrí
tron
g
b
nh....
g
Thuc tính đượcgilàtng hpnếugiátrcanóti
mt nút trong cây đượcxácđịnh tgiá trca các nút
con ca nó.
Thuc tính kếtha thuctínhtimt nút giá tr
canóđượcđịnh nghĩada vào giá trnút cha và/hoc
các nút anh em ca nó.
21/1/2010
4
Định nghĩa ta cú pháp (syntax directed
definition)
Định nghĩata pháp dng tng quát cavănphm phi ng
cnh để đặct pháp ca ngôn ngvào.
Mikýhiucavănphm liên kếtvimttpthuc tính ,
MisnxutAαliên hvimttp các quy tcngnghĩađể
tính giá trthuc tính liên kếtvinhng hiuxuthin trong
snxut. Tp các quy tcngnghĩacódng
b= f (c1,c
2, .....,c
n)
flàmt hàm b thomt trong hai yêu cu sau:
blàmtthuc tính tng hpcaAvàc
1,...,c
n các thuc
tính liên kếtvi các hiu trong vếphisnxutA→α
blàmtthuc tính thakếmt trong nhng hiuxuthin
trong α,và c
1,...,c
n thuc tính ca các hiu trong vế
phisnxutA→α
Ví d
Sn xutQuy tc ng nghĩa
L E return Print (E.val)
E E1+T E.val = E1.val + T.val
E TE.val = T.val
T T1* F T.val = T1.val * F.val
T FT.val = F.val
F (E) F.val = E.val
F digit F.val = digit.Lexval
Các ký hiu E, T, F liên h vi thuc tính tng hp val
T t digit có thuc tính tng hp lexval ( Được b phân
tích t vng đưa ra )
Cây phân tích cú pháp có chú gii
Cây pháp chra giá
t
á
th
h
t i
i
t
r
c
á
c
th
u
c
n
h
t
i
m
i
nút đượcgilàcâycú
pháp chú gii.
Ví d
21/1/2010
5
B kim tra kiu ca định danh B kim tra kiu ca biu thc
B kim tra kiu ca lnh B kim tra kiu ca hàm