Ngôn Ngữ Lập Trình Đơn Giản: Thiết Kế & Cài Đặt
Trang 2MỤC LỤC
MU C LU CÛ Û 2
CHƯƠNG 1 4
M Ở ĐẦ 4U 1.1 GIỚI THIỆU ĐỀ TÀI 4
1.2 QUAN ĐIỂM THIẾT KẾ 4
1.3 KỸ THUẬT BIÊN DỊCH 5
1.4 CẤU TRÚC ĐỒ ÁN 6
CHƯƠNG 2 7
THI T K NG N NG N GIA NẾ Ế Ô Ữ ĐƠ Í 7
2.1 CÁC KHÁI NIỆM CƠ BẢN CỦA NGÔN NGỮ ĐƠN GIẢN 7
2.1.1 Tập các ký tự hợp lệ trong ngôn ngữ 7
2.1.2 Định danh 7
2.1.3 Từ khóa 8
2.1.4 Dấu chấm phẩy, lời giải thích, hằng ký tự 8
2.1.5 Phép toán 8
2.1.6 Biểu thức 8
2.2 SƠ ĐỒ CÚ PHÁP 9
2.3 CÁC CẤU TRÚC LỆNH 11
2.3.1 Cấu trúc tuần tự 11
2.3.2 Cấu trúc rẽ nhánh 11
2.3.3 Cấu trúc lặp 12
2.4 BỘ LỆNH 14
2.4.1 Lệnh gán 15
2.4.2 Các lệnh vào ra dữ liệu 15
2.4.3 Các lệnh điều khiển 16
2.4.4 Các hàm toán học 17
2.4.5 Các hàm vẽ đồ họa 17
CHƯƠNG 3 20
A P DU NG MÏ Û ỘT S KY THU T BI N D CH C BA NỐ Î Ậ Ê Ị Ơ Í 20
3.1 PHÂN TÍCH TỪ VỰNG 20
3.1.1 Loại bỏ khoảng trắng và các dòng chú thích 21
3.1.2 Các hằng 21
3.1.3 Nhận diện định danh và từ dành riêng 22
3.1.4 Giao diện cho bộ phân tích từ vựng 22
3.2 ĐỊNH NGHĨA CÚ PHÁP 23
3.2.1 Cây phân tích cú pháp 24
3.2.2 Tính đa nghĩa 25
3.2.4 Tính thứ bậc của toán tử 25
3.3 PHÂN TÍCH CÚ PHÁP 27
3.3.1 Vai trò của bộ phân tích cú pháp 27
3.3.2 Phân tích cú pháp từ trên xuống 29
3.3.4 Phân tích cú pháp dự đoán 32
3.3.5 Thiết kế bộ phân tích cú pháp dự đoán 34
3.3.6 Đệ qui trái 34
Trang 33.4 BẢNG KÝ HIỆU 35
3.4.1 Giao diện của bảng ký hiệu 35
3.4.2 Xử lý các dành riêng 36
3.4.3 Một cài dặt cho bảng ký hiệu 36
CHƯƠNG 4 39
THI T K CHẾ Ế ƯƠNG TR NH D CH Ì Ị 39
CHO NG N NG N GIA NÔ Ữ ĐƠ Í 39
4.1 MÔ TẢ CHƯƠNG TRÌNH DỊCH 39
4.2 MÔ ĐUN PHÂN TÍCH TỪ VỰNG 41
4.3 MÔ ĐUN PHÂN TÍCH CÚ PHÁP 42
4.3.1 Xây dựng biểu đồ cú pháp 43
43
4.3.2 Phân tích cú pháp đệ qui xuống 43
4.4 XỬ LÝ NGỮ NGHĨA 45
CHƯƠNG 5 46
TH NGHIỬ ỆM CHƯƠNG TR NHÌ 46
5.1 CÁCH SỬ DỤNG 46
5.2 BÀI TOÁN VÍ DỤ 47
CHƯƠNG 6 50
K T LU NẾ Ậ 50
6.1 KẾT QUẢ ĐẠT ĐƯỢC 50
6.2 TÍNH KHẢ THI 50
6.3 HẠN CHẾ 51
6.4 HƯỚNG PHÁT TRIỂN 51
PHU LU CÛ Û 52
TA I LIÌ ỆU THAM KHA Ỏ 54
Trang 4CH ƯƠ NG 1
MỞ ĐẦU
1.1 GIỚI THIỆU ĐỀ TÀI
Khoa học c ng ngh û phát tri n, đặc bi ût la Tin học ô ê ể ê ì Để
s ïm hi u bi t va phát huy ïng dụng cu a m n khoa học na y,ơ ể ế ì ư í ô ì
ng i ta đã đ a Tin học va o gia ng dạy cho các em học sinh ườ ư ì í ở các tr ng học Tin học giúp cho học sinh có kha năng ph nườ í â tích, t ng h üp, khái quát hóa v n đ va đặc bi ût la phát tri nổ ơ ấ ề ì ê ì ể
t duy Tin học giúp cho vi ûc gia i quy t các ba i toán chính xác,ư ê í ế ìrõ ra ng Kh ng ri ng các học sinh ph th ng ma các học sinhì ô ê ổ ô ì
ti u học cũng c n pha i học đ s ïm bi t v m n khoa họcể ầ í ể ơ ế ề ô
na y.ì
Có th nói b ïc đ u đ học Tin học la học ng n ng î l ûpể ươ ầ ể ì ô ư â trình Hi ûn đã có r t nhi u các ng n ng î l ûp trình b ûc caoê ấ ề ô ư â âPascal, C, Foxpro Các ng n ng î na y hoa n toa n du ng bă ng ti ngô ư ì ì ì ì ò ế Anh, v ïi c u trúc c u l ûnh ph ïc tạp ơ ấ â ê ư Đêí các em nho la m quení ì
v ïi các ng n ng î l ûp trình na y va ïng dụng nó thì th ût kh ngơ ô ư â ì ì ư â ô
đ n gia n Thi t nghĩ đ n v n đ na y, trong th i gian th ûc t ûpơ í ế ế ấ ề ì ờ ư â
t t nghi ûp, em chọn đ ta i “Thi t k ng n ng î l ûp trình nố ê ề ì ế ế ô ư â Đơ Gia n”, nhă m thi t k m üt ng n ng î l ûp trình bă ng ti ng Vi ût,í ò ế ế ô ô ư â ò ế ê
v ïi c u trúc c u l ûnh đ n gia n, d ù hi u nh ng kh ng m t tínhơ ấ â ê ơ í ê ể ư ô ấ
t ng quát Ng n ng î na y sẽ ph n na o giúp cho các em học sinhổ ô ư ì ầ ì
d ù da ng la m quen v ïi cách l ûp trình đ gia i quy t các ba iê ì ì ơ â ể í ế ì toán tr n máy tính ê
1.2 QUAN ĐIỂM THIẾT KẾ
Vi ûc thi t k m ïi m üt ng n ng î la khá ph ïc tạp, songê ế ế ơ ô ô ư ì ưchúng ta có th d ûa va o m üt s u đi m cu a các ng n ng îể ư ì ô ố ư ể í ô ư
b ûc cao đã có đ x y d ûng n n m üt ng n ng î thì v n đ sẽ đ nâ ể â ư ê ô ô ư ấ ề ơ gia n h n ma v ùn đáp ïng đ üc các y u c u cu a ba i toán đ ỷ ơ ì â ư ươ ê ầ í ì Ở â
Trang 5chúng ta có hai ph ng pháp đ gia i quy t: m üt la tạo trìnhươ ể í ế ô ì
th ûc thi Nh v ûy ch ng trình ngu n va d î li ûu đ üc x lýư ư â ươ ồ ì ư ê ươ ửtrong hai th i gian khác nhau, đ üc gọi la th i gian dịch va th iờ ươ ì ờ ì ờ gian th ûc thi.ư
Trình th ng dịch la quá trình x lý dạng b n trong cu aô ì ử ê í
ch ng trình ngu n va d î li ûu cu ng m üt th i gian Ch ngươ ồ ì ư ê ì ô ờ ươ trình th ng dịch sẽ ph n tích t ng phát bi u va th ûc ô â ừ ể ì ư
thi lu n.ô
Đề ta i đ üc x y d ûng theo ph ng pháp th ng dịch V ïiì ươ â ư ươ ô ơ
ph ng pháp tạo trình th ng dịch ta có th định nghĩa ch ngươ ô ể ươ trình la t ûp các l ûnh Do đó vi ûc th ûc hi ûn m üt ch ng trìnhì â ê ê ư ê ô ươcũng chính la vi ûc th ûc hi ûn t ng c u l ûnh m üt Ba i toán đ à ê ư ê ừ â ê ô ì ư
v vi ûc gia i quy t t ng c u l ûnh.ề ê í ế ừ â ê
1.3 KỸ THUẬT BIÊN DỊCH
Khi l ûp trình tr n m üt ng n ng î c p cao na o đó, có bao giâ ê ô ô ư ấ ì ờ bạn t û ho i nh va o đ u ma máy tính có th hi u đ üc ch ngư í ờ ì â ì ể ể ươ ươ trình mình vi t đ ma ph n tích va cho ra k t qua nh v ûyế ể ì â ì ế í ư â
kh ng Chính nh va o m üt ch ng trình dịch đã vi t cho ng nô ờ ì ô ươ ế ô
ng î đó đ dịch ch ng trình ngu n ra ch ng trình đích, đ yư ể ươ ồ ươ â cũng la k t qua cu a ch ng trình Quá trình dịch t ch ngì ế í í ươ ừ ươ trình ngu n ra ch ng trình đích th ng đ üc th ûc hi ûn trongồ ươ ườ ươ ư ênhi u giai đoạn.ề
Ch ng trình dịch đ üc vi t cho ng n ng î n Gia n đ y,ươ ươ ế ô ư Đơ í ở â
d ûa tr n m üt s kỹ thu ût bi n dịch cu a Lý thuy t Trình Bi nư ê ô ố â ê í ế ê Dịch, g m các giai đoạn sau:ồ
Trang 6- Giai đoạn ph n tích t v ûng: nhi ûm vụ c ba n cu a nó laâ ừ ư ê ơ í í ì
g üp các ký t û tha nh các t t cho b ü ph n tích cú pháp.ô ư ì ừ ố ô â
- Giai đoạn ph n tích cú pháp: giai đoạn na y, gia i thu ûtâ ở ì í â
cu a ch ng trình la ph n tích cú pháp các c u l ûnh đ ng th ií ươ ì â â ê ồ ờ tính toán tạo k t qua cho t ng l ûnh trong ch ng trình ngu n.ế í ừ ê ươ ồ
1.4 CẤU TRÚC ĐỒ ÁN
Ch ng 1: Gi ïi thi ûu v mục đích, ph ng pháp, kỹ thu ûtươ ơ ê ề ươ â
x y d ûng đ ta i va n üi dung đ án.â ư ề ì ì ô ồ
Ch ng 2: Trình ba y ph n thi t k ng n ng î n Gia n baoươ ì ầ ế ế ô ư Đơ í
g m ca lý thuy t va ba i t ûp ví dụ.ồ í ế ì ì â
Ch ng 3: N u l n m üt s kỹ thu ût c ba n đ x y d ûngươ ê ê ô ố â ơ í ể â ư
ch ng trình dịch, kỹ thu ût na y sẽ đ üc áp dụng đ thi t kươ â ì ươ ể ế ế
ch ng trình cho đ án.ươ ồ
Ch ng 4: D ûa tr n m üt s kỹ thu ût ch ng 3 đ thi t kươ ư ê ô ố â ở ươ ể ế ế
ch ng trình dịch cho ng n ng î n Gia n.ươ ô ư Đơ í
Ch ng 5: Trình ba y cách s dụng ch ng trình va chạyươ ì ử ươ ì
th m üt va i ch ng trình ví dụ.ử ô ì ươ
Ch ng 6: Tóm tă t k t qua đã đạt đ üc, tính kha thi, hạnươ õ ế í ươ í
ch va n u l n h ïng phát tri n cu a đ ta i ế ì ê ê ươ ể í ề ì
Trang 7CH ƯƠ NG 2
THIẾT KẾ NGÔN NGỮ ĐƠN GIẢN
2.1 CÁC KHÁI NIỆM CƠ BẢN CỦA NGÔN NGỮ ĐƠN GIẢN
Ph n na y gi ïi thi ûu v t ûp ký t û, bi n, hă ng, t khóa,ầ ì ơ ê ề â ư ế ò ừchú thích, bi u th ïc va các qui tă c s dụng chúng.ể ư ì õ ử
2.1.1 Tập các ký tự hợp lệ trong ngôn ngữ
- Các ch î cái: du ng các ch î cái ti ng Vi ût có d u hoặcư ì ư ế ê ấ
- T n sai: 1ab, 1bi n, a b, a#b, ê ế
Trong định danh ch î hoa va ch î th ng đ üc xem la khácư ì ư ườ ươ ìnhau N u du ng m üt bi n ch î th ng ma in ra m üt bi n ch îế ì ô ế ư ườ ì ô ế ư hoa hoặc ng üc lại thì ch ng trình sẽ xem nh bi n đó có giáươ ươ ư ếtrị bă ng 0.ò
Ch î cáiư
_
danh
Trang 82.1.3 Từ khóa
La các t da nh ri ng trong ng n ng î, m ùi t có ch ïc năngì ừ ì ê ô ư ô ừ ư
nh t định, khi s dụng pha i vi t đúng cú pháp, kh ng đ ücấ ử í ế ô ươ
du ng va o vi ûc đặt t n bi n.ì ì ê ê ế
trong_khi lặp đến_khi lặp_lại
2.1.4 Dấu chấm phẩy, lời giải thích, hằng ký tự
- L i gia i thích: Cho phép ng i l ûp trình che n c u ghi chúờ í ườ â ì â
va o b t kì vị trí na o trong ch ng trình nhă m mục đích la mì ấ ì ươ ò ì sáng to th m c u trúc cu a ch ng trình ma kh ng a nh h ngí ê ấ í ươ ì ô í ưở
đ n các ph n khác Các l i chú thích đ üc đặt sau d u ngoặcế ầ ờ ươ ấkép (“)
Ví dụ: tổng := a+b; “tính tổng hai số a và b
- D u ‘;’ ấ Được du ng đ ph n cách các c u l ûnh va kh ngì ể â â ê ì ô
th thi u.ể ế
- Các hă ng ký t û: Các hă ng ký t û đ üc bi u di ùn trongò ư ò ư ươ ể êcặp d u nháy đ n ‘ ‘ấ ơ
'Tổng các số dương là: ’
2.1.5 Phép toán
Các ký hi ûu toán học + - * / = < > < > <= >= ()ê
- Phép toán s học: +, - , *, /, div, modố
- Phép toán quan h û: <, <=, >, >=, <>ê
- Phép toán logic: va , hoặcì
- Toán t gán:ử <bi n> := <bi u th ïc>ế ể ư
2.1.6 Biểu thức
Bi u th ïc la m üt c ng th ïc tính toán đ có m üt giá trị theoể ư ì ô ô ư ể ô
m üt qui tă c toán học na o đó M üt bi u th ïc bao g m toán tô õ ì ô ể ư ồ ử
Trang 9va toán hạng Toán t đ üc vi t bă ng d u các phép toán.ì ử ươ ế ò ấToán hạng có th la hă ng, ha m, la bi n Các ph n t cu aể ì ò ì ì ế ầ ử í
bi u th ïc có th đ üc ph n tha nh toán hạng, th a s , bi uể ư ể ươ â ì ừ ố ể
th ïc đ n gia n.ư ơ í
M üt bi u th ïc có ch ïa các toán t quan h û đ üc gọi laô ể ư ư ử ê ươ ì
bi u th ïc quan h û.ể ư ê
a <b, (a+b) >= c bi u th ïc quan h û (bi u th ïcể ư ê ể ư boolean đ n gia n)ơ í
(a<>0) và (d>0) bi u th ïc booleanể ư
2.2 SƠ ĐỒ CÚ PHÁP
VO NGO C LI N Î Ü Ễ
ch ng ươtrình
l ûnh êtrong_khi
l ûnh ê
n uế
l ûnh êlặp_lại
Trang 10số hạng
bi u ể
th ïcư(
định danh
s ốhạng
<=
>
>=
= <
vàhoặ btqh
)
phu _địní btqh
btqh
Trang 112.3 CÁC CẤU TRÚC LỆNH
Ch ng trình đã s dụng 3 loại c u trúc c ba n la tu n t û,ươ ử ấ ơ í ì ầ ư rẽ nhánh va lặp.ì
2.3.1 Cấu trúc tuần tự
C u trúc tu n t û la c u trúc ma máy th ûc hi ûn li n tụcấ ầ ư ì ấ ì ư ê ê
Khi gặp l ûnh na y, máy ki m tra đi u ki ûn logic N u đi uê ì ể ề ê ế ề
ki ûn logic đúng (khác 0) thì th ûc hi ûn ê ư ê <dãy l ûnh 1ê > Co n n ù ế
đi u ki ûn logic sai (bă ng 0) thì th ûc hi ûn ề ê ò ư ê <dãy l ûnh 2ê > (khi có
nếu_không) hoặc bo qua c u trúc na y (n u kh ng có í ấ ì ế ô nếu_không).
Có th có nhi u c u trúc n u thì n u_kh ng l ng nhauể ề ấ ế ế ô ồ
hạng
th ïcư
Hình 1.2 Dãy s đ bi u di ùn cú pháp cu a ng n ơ ồ ể ê í ô
ng î n Gia nư Đơ í
Trang 12nếu (b=0) thì
{ nếu (c=0) thì viết_xd(‘phương trình vô định’) }
viết_xd (‘ x1= ’, -b - sqrt(delta)/(2*a)); viết_xd (‘ x1= ’, -b + sqrt(delta)/(2*a)); }
trong_khi <đi u ki ûn logicề ê > lặp <dãy l ûnhê >
Ch ng na o ừ ì <đi u ki ûn logicề ê > co n đúng thìì <dãy l ûnhê > co nì
đ üc th ûc hi ûn M ùi l n th ûc hi ûn xong ươ ư ê ô ầ ư ê <dãy l ûnhê >,<đi uề
ki ûn logicê > sẽ đ üc ki m tra, n u co n đúng ươ ể ế ì <dãy l ûnhê > ti pế tục đ üc th ûc hi ûn, n u sai l ûnh ti p theo đ üc th ûc hi ûn.ươ ư ê ế ê ế ươ ư ê
“s:=12+22+32+ +n2
viết_xd(‘CHƯ NG TRÌNH TÍNH T ØNG BÌNH PHƯ NG’);Ơ Ô Ơ
viết(‘ Bạn muốn nhập bao nhiêu số:’);
Trang 13}viết_xd(‘Tổng bình phương của:’,n,’ số là:
lặp_lại <dãy l ûnhê > đến_khi <đi u ki ûn logicề ê >
Ch ng na o ừ ì <đi u ki ûn logicề ê > co n sai thì dãy l ûnh đ ücì ê ươ
th ûc hi ûn M ùi khi th ûc hi ûn xong ư ê ô ư ê <dãy l ûnhê >, <đi u ki ûnề ê logic> sẽ đ üc ki m tra, n u đúng chuy n sang th ûc hi ûn l ûnhươ ể ế ể ư ê ê
ti p theo, n u kh ng ế ế ô <dãy l ûnhê > lại đ üc ti p tục th ûc hi ûn.ươ ế ư ê
Ví dụ: “Tính tổng s:=1+2+3+ + n
Trang 14S l n th ûc hi ûn c u l ûnh do ố ầ ư ê â ê <bi n đi u khi nế ề ể > qui định,
bi n na y đ üc gán giá trị đ u la ế ì ươ ầ ì <giá trị đ uầ > sau m ùi l nô ầ
th ûc hi ûn ư ê <l ûnhê > bi n đi u khi n sẽ tăng l n hoặc gia mế ề ể ê í
xu ng m üt đ n vị, ti p tục th ûc hi ûn ố ô ơ ế ư ê <l ûnhê > cho đ n khi bi nế ế
đi u khi n v üt quá ề ể ươ <giá trị cu iố >
Ví dụ: “Tính tổng
L ûnh đ n la l ûnh kh ng ch ïa l ûnh na o khác L ûnh ghép laê ơ ì ê ô ư ê ì ê ì
l ûnh ghép nhi u l ûnh lại v ïi nhau tha nh chung m üt l ûnhê ề ê ơ ì ô ê
bă ng cách đặt gi îa hai d u ngoặc nhọn “{“ va “}” ò ư ấ ì
Các l ûnh vi t ngăn cách nhau b i d u “;” va tr n m üt do ngê ế ở ấ ì ê ô ì có th vi t nhi u l ûnh.ể ế ề ê
V ki u d î li ûu thì ch ng trình nh ûn ki u s th ûc.ề ể ư ê ươ â ể ố ư
Trang 152.4.1 Lệnh gán
bi n:=bi u_thế ể
ïc;
ưTính giá trị cu a bi u th ïc b n pha i r i gán cho bi n b n tráií ể ư ê í ồ ế ê
Dạng (2): In các chu ùi va giá trị cu a các bi u th ïc ra ma nô ì í ể ư ì hình, in xong xu ng do ng.ố ì
Trang 16nh ûp Sau đó máy sẽ l n l üc l y giá trị nh ûp va o đ gán choâ ầ ươ ấ â ì ểcác bi n t ng ïng Bi n nh ûn giá trị thu üc ki u th ûc.ế ươ ư ế â ô ể ư
Dạng (3): Ch ng i du ng nh n phím ENTER đ ti p tụcờ ườ ì ấ ể ế
Tạo c a s có tọa đ ü góc tr n b n trái x1, y1 va tọa đ ü gócử ổ ô ê ê ì ô
d ïi b n pha i x2, y2.ươ ê í
c Đặt màu chữ, màu nền
ma u_ch î(colì ưor);
ma u_n n(cò ềlor);
Trong hai tr ng h üp tr n color la m üt bi n nguy n ch ïa mãườ ơ ê ì ô ế ê ư
cu a ma u (xem ba ng2.1)í ì í
Ví dụ:
màu_chữ(4) ch î in ra sẽ la ma u đoư ì ì í
màu_nền(1) ma u cu a n n sẽ la ma u xanh da tr iì í ề ì ì ờ
d Di chuyển con trỏ
Trang 17tă t();õ
Tă t tín hi ûu m thanh.õ ê â
f Lệnh trễ chương trình
ch (ms);ờ
La m tr ù ch ng trình m üt khoa ng th i gian miligi ỳ ê ươ ô í ờ â
2.4.4 Các hàm toán học
a Tính căn bậc hai của x
2.4.5 Các hàm vẽ đồ họa
Các ha m vẽ đ họa đ n gia n có ma u nét vẽ đ üc xác địnhì ồ ơ í ì ươ
b i ha m ma u_vẽ(t n ma u), v ïi t n ma u la các s trong ba ngở ì ì ê ì ơ ê ì ì ố í
ma u 2.1.ì
a Hàm vẽ đường thẳng
đ_thă ng(x1, y1, x2,óy2);
Vẽ m üt đ ng thă ng xác định v ïi tọa đ ü đi m đ u la (x1,y1)ô ườ ó ơ ô ể ầ ìtọa đ ü đi m cu i la (x2,y2).ô ể ố ì
b Hàm vẽ hình chữ nhật
hình_cn(x1, y1, x2, y2);
Trang 18Tọa đ ü đỉnh tr n b n trái (x1,y1), tọa đ ü đỉnh d ïi b n pha iô ê ê ô ươ ê í (x2,y2).
c Hàm vẽ đường tròn
đ_tro n(x, y, r);ìTọa đ ü t m cu a đ ng tro n (x,y), bán kiïnh đ ng tro n rô â í ườ ì ườ ì
d Hàm vẽ elip
elip(x, y, gd, gc, xr, yr);
(x,y) la tọa đ ü cu a t m elipì ô í â
Trang 20va b ü ph n tích cú pháp minh họa (hình 3.1), đ üc ca i đặtì ô â ươ ì
bă ng cách cho b ü ph n tích t v ûng la m m üt thu tục conò ô â ừ ư ì ô íhoặc m üt đ ng thu tục v ïi b ü ph n tích cú pháp ô ồ í ơ ô â
Khi nh ûn đ üc y u c u l y the t ti p theo t b ü ph n tíchâ ươ ê ầ ấ í ừ ế ừ ô âcú pháp, b ü ph n tích t v ûng sẽ đọc các ký t û cho đ n khiô â ừ ư ư ếnó nh ûn di ûn ra đ üc m üt the t B ü ph n tích t v ûng laâ ê ươ ô í ừ ô â ừ ư ì tha nh ph n đọc ch ng trình ngu n cu a trình bi n dịch, nóì ầ ươ ồ í ê
th ng th ûc hi ûn th m m üt s tác vụ khác m ïc giao di ûnườ ư ê ê ô ố ở ư ê
Trang 213.1.1 Loại bỏ khoảng trắng và các dòng chú thích
Ch ng trình dịch sẽ xét các ký t û trong nguy n li ûu, vì thươ ư ê ê ế các ký t û ngoa i d û ki n nh các ký t û tr ng sẽ khi n nóư ì ư ế ư ư ố ế
th t bại Ng n ng î l ûp trình th ng cho phép các khoa ngấ ô ư â ườ í tră ng (ký t û tr ng, ký t û tab, ký t û xu ng do ng) xu t hi ûnõ ư ố ư ư ố ì ấ ê
gi îa các the t B ü ph n tích t v ûng có nhi ûm vụ loại boư í ừ ô â ừ ư ê í các khoa ng tră ng na y tr ïc khi đ a qua b ü ph n tích cú pháp.í õ ì ươ ư ô âCác do ng chú thích cũng đ üc b ü ph n tích cú pháp và ươ ô â ì
ch ng trình dịch bo qua, vì th chúng cũng đ üc x lý nhươ í ế ươ ử ư khoa ng tră ng.í õ
3.1.2 Các hằng
M ùi khi có m üt ký s xu t hi ûn trong m üt bi u th ïc, có lẽô ô ố ấ ê ô ể ưsẽ h üp lý h n khi cho phép đặt m üt hă ng s na o đó vị tríơ ơ ô ò ố ì ở
cu a nó B i vì m üt hă ng s la m üt dãy các ký s , nó có thí ở ô ò ố ì ô ố ể
du ng đ üc bă ng cách th m các lu ût sinh va o văn phạm cho cácì ươ ò ê â ì
bi u th ïc hoặc bă ng cách tạo ra m üt the t cho các hă ng nhể ư ò ô í ừ ò ư
th C ng vi ûc gom các ký s tha nh s , đ üc th ûc hi ûn b iế ô ê ố ì ố ươ ư ê ở
b ü ph n tích t v ûng b i vì các s có th đ üc x lý nhô â ừ ư ở ố ể ươ ử ư
nh îng đ n vị ri ng bi ût trong quá trình dịch.ư ơ ê ê
Chă ng hạn ó num la the t bi u thị m üt s thì b ü ph n tíchì í ừ ể ô ố ô â
t v ûng sẽ chuy n ừ ư ể num cho b ü ph n tích cú pháp Giá trị cu aô â í
s sẽ đ üc chuy n theo d ïi dạng m üt thu üc tính cu a the tố ươ ể ươ ô ô í í ừ num, b ü ph n tích t v ûng sẽ chuy n ca the t va thu üc tínhô â ừ ư ể í í ừ ì ô
cu a nó cho b ü ph n tích cú pháp.í ô â
N u ta vi t m üt the t va thu üc tính cu a nó nh m üt b üế ế ô í ừ ì ô í ư ô ô
d î li ûu đ üc bao gi îa hai d u < > thì nguy n li ûuư ê ươ ư ấ ê ê
25.5 + 90 - 20
đ üc bi n đ i tha nh m üt dãy các b üươ ế ổ ì ô ô
<num, 25.5> <+, > <num, 90> <-, > <num, 20>
The t í ừ +,- kh ng có thu üc tính Tha nh ph n th ï hai cu a cácô ô ì ầ ư í
b ü kh ng có vai tro gì trong khi ph n tích cú pháp nh ng sẽ c nô ô ì â ư ầ
du ng đ n khi dịch.ì ế
Trang 223.1.3 Nhận diện định danh và từ dành riêng
Ng n ng î s dụng định danh la m t n cho các bi n M üt vănô ư ử ì ê ế ôphạm cho m üt ng n th ng x lý định danh nh m üt the t ô ô ườ ử ư ô í ừ
B ü ph n tích cú pháp d ûa tr n m üt văn phạm, nh th mu nô â ư ê ô ư ế ố
nh ûn đ üc cu ng m üt the t chă ng hạn la â ươ ì ô í ừ ó ì id, m ùi khi có m ütô ô định danh xu t hi ûn trong nguy n li ûu.ấ ê ê ê
sẽ đ üc b ü ph n tích t v ûng bi n đ i tha nh do ng the t ươ ô â ừ ư ế ổ ì ì í ừ id
= id + id
Khi gặp m üt t t tạo ra m üt định danh trong nguy n li ûu,ô ừ ố ô ê êthì ta c n có m üt c ch xem t t na y đã gặp tr ïc đó hayầ ô ơ ế ừ ố ì ươ
ch a Ta sẽ du ng m üt ba ng ký hi ûu cho c ng vi ûc na y T tư ì ô í ê ô ê ì ừ ố
l u trong ba ng ký hi ûu va m üt con tro chỉ đ n mục ghi tr nư í ê ì ô í ế ê
ba ng tr tha nh m üt thu üc tính cu a the t í ở ì ô ô í í ừid
Ngoa i định danh co n có các t khóa, các t n ha m la các tì ì ừ ê ì ì ừ
da nh ri ng, các định danh kh ng đ üc tru ng t n v ïi các t na y.ì ê ô ươ ì ê ơ ừ ì
B ü ph n tích t v ûng xác định định danh hay t da nh ri ngô â ừ ư ừ ì ê
bă ng cách sau khi gom tha nh the t r i so sánh v ïi các t da nhò ì í ừ ồ ơ ừ ì
ri ng trong ba ng ký hi ûu n u kh ng tru ng thì the t đó la ê í ê ế ô ì í ừ ì id,
ng üc lại la t da nh ri ng.ươ ì ừ ì ê
3.1.4 Giao diện cho bộ phân tích từ vựng
Khi m üt b ü ph n tích t v ûng đ üc đặt gi îa b ü ph n tích cúô ô â ừ ư ươ ư ô âpháp va do ng nguy nì ì ê
li ûu, nó t ng tác v ïi ca hai ph n na y nh (hình 3.2) Nó đọcê ươ ơ í ầ ì ưcác ký t û t nguy n li ûu, nhóm chúng lại tha nh các t t r iư ừ ê ê ì ừ ố ồ
g i các the t đ üc tạo b i các t t cu ng v ïi giá trị thu ücử í ừ ươ ở ừ ố ì ơ ô tính cu a chúng đ n giai đoạn sau cu a trình bi n dịch Trongí ế í ê
m üt s tình hu ng, b ü ph n tích t v ûng pha i đọc tr ïc m ütô ố ố ô â ừ ư í ươ ô ký t û tr ïc khi có th quy t định sẽ tra v the t na o cho b üư ươ ể ế í ề í ừ ì ô
ph n tích cú pháp.â
Ví dụ:
Khi gặp ký t û ư > thì b ü ph n tích t v ûng sẽ đọc ti p.ô â ừ ư ế
N u ký t û k ti p la ế ư ế ế ì = thì chu ùi ký t û ô ư >= la t t tạo ra thè ừ ố í
t cho toán t “l ïn h n hoặc bă ng” Ng üc lại thì ừ ử ơ ơ ò ươ > la t tì ừ ố
Trang 23tạo ra the t cho toán t “l ïn h n”, va b ü ph n tích t v ûng đãí ừ ử ơ ơ ì ô â ừ ưđọc m üt ký t û nhi u l n Ký t û “d ” ra na y pha i đ üc đ a trô ư ề ầ ư ư ì í ươ ư ở lại nguy n li ûu, b i vì nó có th la ký t đ u ti n cu a t tê ê ở ể ì ừ ầ ê í ừ ố
k ti p trong nguy n li ûu.ế ế ê ê
B ü ph n tích t v ûng tạo ra các the t va b ü ph n tích cúô â ừ ư í ừ ì ô âpháp sẽ s dụng nó Các the t sinh ra đ üc gi î trong vu ngử í ừ ươ ư ì
đ ûm cho đ n khi chúng đ üc s dụng T ng tác gi îa hai b üê ế ươ ử ươ ư ô
ph n tích na y chỉ bị ra ng bu üc b i kiïch th ïc vu ng đ ûm b i vìâ ì ì ô ở ươ ì ê ở
b ü ph n tích t v ûng sẽ kh ng th ti n ha nh khi vu ng đ ûmô â ừ ư ô ể ế ì ì ê
đ y co n b ü ph n tích cú pháp sẽ kh ng th ti n ha nh khi vu ngầ ì ô â ô ể ế ì ì
đ ûm r ùng Vì vu ng đ ûm chỉ gi î m üt the t n n t ng tác đ ücê ô ì ê ư ô í ừ ê ươ ươ
ca i đặt đ n gia n bă ng cách đ a b ü ph n tích t v ûng tha nhì ơ í ò ư ô â ừ ư ì
m üt ha m đ üc b ü ph n tích cú pháp gọi, tra v các the tô ì ươ ô â í ề í ừ theo nh y u c u.ư ê ầ
3.2 ĐỊNH NGHĨA CÚ PHÁP
Trong ph n na y sẽ gi ïi thi ûu m üt h û ký pháp có t n gọi laầ ì ơ ê ô ê ê ì văn phạm phi ng î ca nh đ üc du ng đ xác định cú pháp cu aư í ươ ì ể í
Có nghĩa la m üt phép n i cu a t khóa ì ô ố í ừ if, m üt d u ngoặc m ,ô ấ ở
m üt ô biểu thức, m üt d u ngoặc đóng, c u ô ấ â lệnh, t khóa ừ else va c u ì â lệnh
b ü ph n tíchô â
t v ûngừ ư
Hình 3.2 ặt b ü ph n tích t v ûng va o gi îa nguy n li ûu va Đ ô â ừ ư ì ư ê ê ì
b ü ph n tích cú pháp ô â
b ü ph n tíchô â cú pháp
Trang 24M üt qui tă c nh tr n đ üc gọi la lu ût sinh Trong lu ût sinh,ô õ ư ê ươ ì â â
M üt văn phạm phi ng î ca nh có b n tha nh ph n :ô ư í ố ì ầ
1 M üt t ûp các the t , gọi la các ký hi ûu k t thúc.ô â í ừ ì ê ế
2 M üt t ûp các ký hi ûu ch a k t thúc.ô â ê ư ế
4 M üt ký hi ûu kh i đ u, đó la m üt ký hi ûu ch a k tô ê ở ầ ì ô ê ư ế thúc
3 M üt t ûp lu ût sinh, trong đó m ùi lu ût sinh g m m üt kýô â â ô â ồ ô
hi ûu ch a k t thúc gọi la v trái cu a lu ût sinh, m üt mũi t n,ê ư ế ì ế í â ô ê
va m üt chu ùi các the t va /hoặc các ký hi ûu ch a k t thúcì ô ô í ừ ì ê ư ế
la v pha i cu a lu ût sinh Ví dụ: Aì ế í í â → α1α2 .αn, v ïi ơ α1,
α2 la các ký hi ûu k t thúc hoặc ch a k t thúc.ì ê ế ư ế
Ví dụ:
Cho văn phạm G sinh ra các bi u th ïc g m các s , ngănể ư ồ ố
gi îa các s la d u ư ố ì ấ + hoặc
-list → list + digit
| digitdigit → 0|1|2| |9
3.2.1 Cây phân tích cú pháp
C y ph n tích cú pháp cho th y bă ng hình a nh xem la m nhâ â ấ ò í ì ư
th na o d ùn xu t ra m üt chu ùi cu a ng n ng î t ký hi ûu kh iế ì â ấ ô ô í ô ư ừ ê ở
đ u cu a m üt văn phạm V hình th ïc cho tr ïc m üt vănầ í ô ề ư ươ ôphạm phi ng î ca nh, m üt c y ph n tích cú pháp la m üt c y cóư í ô â â ì ô âđặc tính sau:
- G c có nhãn la ký hi ûu kh i đ uố ì ê ở ầ
- M ùi nút la có nhãn la m üt the t hoặc ô ì ì ô í ừ ε
- M ùi nút kh ng pha i la nút cu i cu a c y thì đó la ký hi ûuô ô í ì ố í â ì ê
ch a k t thúc.ư ế
Trang 25- N u ế A m üt ký hi ûu ch a k t thúc, la nhãn cu a nút kh ngô ê ư ế ì í ô pha i la nút cu i, í ì ố X1, X2, Xn la nhãn các con cu a nút có nhãn ì í A
t trái sang pha i thì ừ í A → X1, X2, Xn la m üt lu ût sinh.ì ô â X1, X2, Xn
la các ký hi ûu k t thúc hoặc ch a k t thúc N u ì ê ế ư ế ế A→ ε thì
m üt nút đ üc gán nhãn ô ươ A có th có m üt con duy nh t cóể ô ấnhãn ε
3.2.2 Tính đa nghĩa
M ùi c y ph n tích cú pháp đ u d ùn xu t chính xác chu ùiô â â ề â ấ ô
đ üc đọc t các nút lá nh ng m üt văn phạm có th có nhi uươ ừ ư ô ể ề
c y ph n tích cú pháp sinh ra chu ùi the t đã cho M üt vănâ â ô í ừ ôphạm nh th gọi la đa nghĩa M üt chu ùi v ïi nhi u c y ph nư ế ì ô ô ơ ề â â tích cú pháp th ng có nhi u nghĩa ườ ề Để ê bi n dịch các ch ngươ trình ïng dụng, chúng ta c n thi t k các văn phạm đ nư ầ ế ế ơ nghĩa, hoặc s dụng các văn phạm đa nghĩa v ïi các qui tă c bử ơ õ ổ sung nhă m gia i quy t tính đa nghĩa.ò í ế
3.2.3 Tính kết hợp của toán tử
Trong ph n l ïn các ng n ng î l ûp trình b n toán t s họcầ ơ ô ư â ố ử ố
c üng(+), tr (-), nh n(*) chia(/) đ u có tính k t h üp trái, toán tô ừ â ề ế ơ ử
l y lũy th a, toán t gán có tính k t h üp pha i.ấ ừ ử ế ơ í
3.2.4 Tính thứ bậc của toán tử
Chúng ta nói ră ng toán t nh n có th ï b ûc cao h n toán tò ử â ư â ơ ử
c üng n u * l y các toán hạng cu a nó tr ïc toán t + Trong sô ế ấ í ươ ử ố hoûc phép nh n va phép chia có th ï b ûc cao h n phép c üng vaâ ì ư â ơ ô ì phép tr ừ
a Cú pháp cho biểu thức
Văn phạm cho các bi u th ïc s học có th đ üc x y d ûngể ư ố ể ươ â ư
t m üt ba ng trình ba y tính k t h üp va th ï b ûc cu a toán t ừ ô í ì ế ơ ì ư â í ử Chúng ta bă t đ u v ïi b n toán t s học th ng th ng va m ütõ ầ ơ ố ử ố ô ườ ì ô
ba ng th ï b ûc, trình ba y các toán t theo th ï b ûc nga y ca ngí ư â ì ử ư â ì ì cao, các toán t có cu ng th ï b ûc tr n m üt ha ng.ử ì ư â ở ê ô ì
k t h üp trái: + -ế ơ
Trang 26k t h üp trái: * /ế ơ
Chúng ta tạo ra hai ch a t ûn ư â expr va ìterm cho hai m ïc th ïư ư
b ûc va m üt ch a t ûn â ì ô ư â factor n îa đ tạo ra nh îng đ n vị c ba nư ể ư ơ ơ í cho bi u th ïc Các đ n vị c ba n hi ûn có trong bi u th ïc la cácể ư ơ ơ í ê ể ư ìký số(digit) va các bi u th ïc có đóng m ngoặc đ n.ì ể ư ở ơ
factor → digit| (expr)
B y gi ta xét đ n toán t hai ng i * va / v ïi th ï b ûc cao nh t.â ờ ế ử ô ì ơ ư â ấ
B i vì nh îng toán t na y có tính k t h üp trái, lu ût sinh cu aở ư ử ì ế ơ â í chúng t ng t û nh lu ût sinh cho các ươ ư ư â list(3.1) v ïi tính k tơ ế
Do v ûy chúng ta thu đ üc văn phạm sauâ ươ
expr → expr + term | expr - term | term
term → term * factor | term / factor | factor
factor → digit | (expr)
Văn phạm na y x lý bi u th ïc nh m üt danh sách các ì ử ể ư ư ô term
đ üc ph n cách b i d u * hoặc / B t ky m üt bi u th ïc na o cóươ â ở ấ ấ ì ô ể ư ìđóng m ngoặc đ u la ở ề ì factor, vì th v ïi các d u ngoặc chúngế ơ ấ
ta có th x y d ûng các bi u th ïc tu y nghi nhi u c p l ng va oể â ư ể ư ì ề ấ ồ ì nhau
b Cú pháp các câu lệnh
T khóa cho phép chúng ta nh ûn ra các c u l ûnh trong ph nừ â â ê ầ
Trang 27ch a k t thúc ư ế factor sinh ra cho các bi u th ïc c ba n.ể ư ơ í
expr → expr + term expr - term term
term → term * factor term / factor factor
factor → digit (expr)
3.3 PHÂN TÍCH CÚ PHÁP
Quá tình tạo ra d ùn xu t hoặc c y d ùn xu t c u cu a ng nâ ấ â â ấ â í ô
ng î cho tr ïc đ üc gọi la s û ph n tích hay la ph n tích cúư ươ ươ ì ư â ì âpháp cu a c u Mục đích cu a quá trình na y kh ng chỉ khă ngí â í ì ô ó định la li ûu m üt x u tr n ba ng ch î cu a ng n ng î có pha i la c ù ê ô â ê í ư í ô ư í ì â
cu a ng n ng î đó kh ng, nghĩa la kh ng ch ïa các l ùi cú pháp,í ô ư ô ì ô ư ô
ma co n kh ng kém ph n quan trọng la tìm c u trúc cú phápì ì ô ầ ì ấ
cu a c u, đ sau đó có th tạo ra ba n dịch sang ng n ng î khác.í â ể ể í ô ư
B ü ph n tích cú pháp ph n tích chu ùi các the t do b ü ph nô â â ô í ừ ô â tích t v ûng cung c p, đ có đ üc c u trúc ph ïc tạp h n cu aừ ư ấ ể ươ ấ ư ơ í
ch ng trình ngu n nh bi u th ïc, phát bi u, ch ng trình con.ươ ồ ư ể ư ể ươCác c u trúc na y đ üc th hi ûn d ïi dạng c y cú pháp hayấ ì ươ ể ê ươ â
c y d ùn xu t d ûa tr n định nghĩa cu a ng n ng î ngu n Các nútâ â ấ ư ê í ô ư ồlá cu a c y cú pháp la các the t H u h t các ph ng phápí â ì í ừ ầ ế ươ
ph n tích đ u nă m trong các l ïp: Ph n tích t tr n xu ng (top-â ề ò ơ â ừ ê ốdown) va ph n tích cú pháp t d ïi l n (bottom-down).ì â ừ ươ ê
3.3.1 Vai trò của bộ phân tích cú pháp
B ü ph n tích cú pháp nh ûn các chu ùi the t t b ü ph nô â â ô í ừ ừ ô â tích t v ûng (hình 3.3) đ tạo ra c u trúc cú pháp cu a ch ngừ ư ể ấ í ươ trình ngu n ó cũng la quá trình x y d ûng c y ph n tích cúồ Đ ì â ư â âpháp cho chu ùi the t ô í ừ
Ph ng pháp th ng dụng đ x y d ûng b ü ph n tích cú phápươ ô ể â ư ô â
la ph n tích cú pháp t tr n xu ng hoặc t d ïi l n B ü ph nì â ừ ê ố ừ ươ ê ô â tích cú pháp t tr n xu ng sẽ tạo c y ph n tích bă t đ u t g cừ ê ố â â õ ầ ừ ố