Những Kiến Thức Cơ Bản Về Chương Trình Dịch (Bách Khoa Đà Nẵng)
Trang 1Giáo trình Ki n trúc máy tính và H
KHOA CÔNG NGH THÔNG TIN
Trang 6NNLT b c cao (Higher _level language)
Ch ng 2
Trang 7Ch ng 2
Trang 16- i v i liên k t t do, có th s d ng nhi u
kho ng tr ng thay vì m t kho ng tr ng
Trang 18Giáo trình Ki n trúc máy tính và H
CH NG 1 NH P MÔN CH NG TRÌNH D CH
3 Các qui t c t v ng và cú pháp
3.5 Modun hoá và chuy n giao d li u
- Modun hoá là kh n ng tách m t công vi c l n
Trang 19• Truy n theo tham bi n
• Truy n theo tham tr
Trang 26Giáo trình Ki n trúc máy tính và H
CH NG 1 NH P MÔN CH NG TRÌNH D CH
4 Các ch c n ng c a m t ch ng trình biên d ch
4.5 sinh mã trung gian
- Sau giai đo n phân tích ng ngh a
- Mã trung gian là m t d ng trung gian c a CT
ngu n có 2 đ c đi m:
• D đ c sinh ra
• D d ch sang ngôn ng đích
Trang 28m t ngôn ng khác ngôn ng ngu n.
Ü Các pha (giai đo n) có th th c hi n song hành
Ü M t vài pha có th ghép l i thành l t (chuy n
Ü M t l t s đ c toàn b CT ngu n hay m t
d ng trung gian c a CT ngu n, sau đó ghi k t
qu đ l t sau đ c và x lý ti p.
Trang 29B PTTV id1:=(id2+id3)*Num4
B PTCP n1
id1 := n2
* n3
id2
Num4
id3 +
B PTNN n1
id1 := n2
* n3
id2
Intoreal(65)
id3 +
B sinh mã trung gian
Temp1:=intoreal(65) Temp2:=id2+id3 Temp3:=temp2*temp1 Id1:=temp3
B t i u sinh mã trung gian
Temp1:=id2+id3 Id1:=temp1*65.0
B sinh mã đ i t ng
MovF id2, R1 MovF id3, R2 Add R2, R1 Mult #65.0, R1 MovF R1, id1
Trang 32Giáo trình Ki n trúc máy tính và H
CH NG 2 PHÂN TÍCH T V NG
- c xâu vào t ng ký t m t å gom l i
thành token đ n khi g p ký t không th k t
Trang 33t v ng
G i token B
phân tích
cú pháp Yêu c u token
B ng danh bi u
Trang 39c a Otomat.
- Bi u di n b ng b ng xác đ nh hàm
chuy n tr ng thái, t p các tr ng thái, b
ch vào nh ng không phân bi t đ c
tr ng thái b t đ u và tr ng thái k t thúc.
Trang 40tr ng thái theo Có th đ c xong hay không
đ c xong xâu vào.
Trang 41- c xong xâu vào đ n m t tr ng thái p∈F
thì xâu vào đ c đoán nh n (xâu đúng).
- c xong xâu vào mà r i vào tr ng thái p ∉F
thì xâu vào không đ c đoán nh n.
- Không đ c xong xâu vào (do r i vào đi m
không xác đ nh) thì xâu vào không đ c
đoán nh n.
Trang 45
-L nh r nhánh
L nh l p
Trang 46Procedure Dockytu(var c:char);
…{ c ký t ti p, ký t này luôn luôn đ c
đ c tr c}
Function LoaiKT(c:char):Loaikytu;
…{Cho bi t lo i c a ký t c}
Procedure Baoloi;
…{Cho m t thông báo l i}
Procedure Tuvung(var ma:Loaituto;var x:xau); Var i:0 max;
Begin For i:=1 to max do x[i]:=’’;
I:=0;
While loaikytu(kytutiep)=trang do
Dockytu(kytutiep);
Case loaikytu(kytutiep) of Conso: Begin
Trang 47Ccai: begin
Repeat
If i<max then Begin I:=i+1;
x[i]:=kytutiep;
end;
Dockytu(kytutiep);
Until (loaikytu(kytutiep)<>Ccai) and (loaikytu(kytutiep)<>conso);
Ma:=danhbieu;
End;
End; {case} End; {tuvung}
Trang 56- Các phép toán trên xâu
• Ghép ti p: cho 2 xâu x,y Ghép ti p c a x, y
là x.y hay xy là 1 xâu vi t x tr c, r i đ n y sau ch không có d u cách.
Ví d : x=01
y=0110 xy=010110
Trang 58- Các phép toán trên ngôn ng
• Vì ngôn ng là t p h p nên có các phép toán
t p h p: ∩(giao), ∪(h p), -(hi u, bù)
Trang 59x.x=x 2 ; x.x.x=x 3 ; x 0 = ε; x i =x i-1 x
L 0 ={ ε}; L i =L i-1 L
- L*=L0 ∪L 1 ∪L 2 ∪…∪; L + =L 1 ∪L 2 ∪…∪
Trang 62p: t p h u h n các s n xu t có d ng
Aå α v i A∈ và ( ∪ )*
Trang 68- N u luôn luôn thay th ký hi u ch a k t
thúc bên trái nh t g i là suy d n trái
T ng t ta có suy d n ph i
Trang 70- Suy d n trái t o cây suy d n trái.
- Suy d n ph i t o cây suy d n ph i.
- Ví d : cho v n ph m phi ng c nh sau:
EåE+E | E*E | (E) | a
V cây suy d n trái, ph i sinh xâu: a+a*a
(1) (2) (3) (4)
Trang 71nh t, trái l i thì G là v n ph m nh p nh ng.
Trang 80Rå E=E
Eå a | b | (E+E) Xâu x: (a=(b+a))
Trang 87-Báo l i x không đúng cú pháp VP G -D ng vòng l p
Trang 88vp trên?
Trang 91If (A ∈ ) xu t hi n đ nh Stack Then
Ch n sx thích h p Aåβ
Tri n khai A b ng β đ nh Stack
Trang 92L y a ra kh i Stack và Buffer { đ i sánh}
Trang 103- Báo l i x không đúng cú pháp G
- D ng vòng l p
Trang 104vp trên?