MƠ TẢ CHƯƠNG TRÌNH DỊCH

Một phần của tài liệu Ngôn Ngữ Lập Trình Đơn Giản: Thiết Kế & Cài Đặt (Trang 39 - 41)

M UC LU ÛÛ

4.1 MƠ TẢ CHƯƠNG TRÌNH DỊCH

Ch ng trình dịch đ üc thi t k bă ng cách du ng l üc đươ ươ ế ế ị ì ươ ồ dịch cú pháp (hình4.1a,b,c). L üc đ na y đ üc x y d ûng d ûaươ ồ ì ươ â ư ư tr n cú pháp cu a ng n ng ỵ n Gia nê í ơ ư Đơ í

chương_trình → dãy_lệnh

dãy_lệnh → lệnh;dãy_lệnh|lệnh; lệnh → {dãy_lệnh}

|nếu btqh thì lệnh opt_else_clause |cho id:=bt tới bt lệnh

|cho id:=bt xuống bt lệnh

|trong_khi btqh l ûp lệnhă

|l ûp_lại lệnh đến_khi btqh ă

|id:=bt

|lệnh_khác

opt_else_lause →nếu_khơng lệnh|ε

Hình 4.1a L üc đ dịch cú pháp cho các c u l ûnhươ ồ â ê

lệnh_khác la các l ûnh gọi ha m, m ùi ha m cĩ m üt ch ïcì ê ì ơ ì ơ ư

năng ri ng va t n gọi cu a m ùi ha m khác nhau.ê ì ê í ơ ì

T ûp các ký hi ûu ch a k t thúc: Vâ ê ư ế n = {chương_trình,

T ûp các ký hi ûu k t thúc: Vâ ê ế t={; {, }, nếu, thì,

nếu_khơng, cho, tới, xuống, trong_khi, l ûp, l ûp_lại,ă ă

đến_khi, id, :=, =}

Ký hi ûu mục ti u: ch ng_trìnhê ê ươ Trong đĩ:

btqh: (bi u th ïc quan h û): g m các phép tốn quan h û gi ỵaể ư ê ồ ê ư bi u th ïc v ïi bi u th ïcể ư ơ ể ư

(<, <=, >, >=, =, <>), các phép tốn logic (phủ_định,và,ho ûcă ) cĩ the l ng nhau.í ồ

Nĩ đ üc định nghĩa:ươ

btqh →qh term1

term1 → bt_logic qh term1 |ε

bt_logic → và | ho ûcă

qh →( btqh )

| phủ_định qh | bt pt_qh bt

pt_qh→ < | <= | > | >= | = | <>

Hình 4.1b L üc đ dịch cú pháp cho bi u th ïc quan h ûươ ồ ể ư ê

bt(bi u th ïc s học): các s , định danh va các phép tốn sể ư ố ố ì ố học cĩ th l ng nhau th ng qua các d u ngoặc đ n “(“, ”)”.ể ồ ơ ấ ơ

bt → term rest1 | -bt

rest1 →+term rest1

|-term rest1

term → factor rest2

rest2 → *factor rest2

|/factor rest2 |div factor rest2 |mod factor rest2

factor → (bt)

|id

|num

Hình 4.1c L üc đ dịch cho các bi u th ïc s học ươ ồ ể ư ố

The t í ừ id(định danh) bi u di ùn m üt dãy kh ng r ùng g mể ê ơ ơ ơ ồ các ch ỵ cái va ký s bă t đ u bă ng ch ỵ cái, ư ì ố õ ầ ị ư num la m üt dãy kýì ơ s , ố eof la ký t û cu i t ûp tin. Các the t đ üc ph n cách b iì ư ố â í ừ ươ â ở các khoa ng tră ng. í õ

oạn mã ch ng trình đ üc vi t trong nhi u m đun, m ùi m

Đ ươ ươ ế ề ơ ơ ơ

đun la m üt ha m, th ûc hi ûn t ng ch ïc năng ri ng trong quáì ơ ì ư ê ừ ư ê trình ph n tích va di ùn dịch. M đun chính đ dịch ch ng trìnhâ ì ê ơ ể ươ la ha m ì ì compile(), ca i đặt nh sau:ì ư int compile() { init(); nextsym(); lookahead=typetoken; order(1); if (err) return 0; else return 1; }

Ha m ì init() đ üc gọi đ u ti n đ kh i gán các t da nh ri ngươ ầ ê ể ở ừ ì ê va o ba ng ký hi ûu. Lúc đ u loại ì í ê ầ token va trị t v ûng cu a cácì ừ ư í t da nh ri ng đ üc c t trong dãy ừ ì ê ươ ấ keyword, init sẽ du ng ha mì ì

insertđ c t các t khĩa va o ba ng ký hi ûu tr ïc khi trình bi nể ấ ừ ì í ê ươ ê dịch bă t đ u la m vi ûcõ ầ ì ê .Ti p theo ha m ế ì nextsym()đ üc gọi, ha mươ ì na y th ûc hi ûn ch ïc năng ph n tích t v ûng. Bi n ì ư ê ư â ừ ư ế lookahead

đ üc gán cho loại t t ươ ừ ố typetoken tr ïc khi gọi ha m ươ ì order(1)

đ th ûc hi ûn các l ûnh trong ch ng trình.ể ư ê ê ươ

Một phần của tài liệu Ngôn Ngữ Lập Trình Đơn Giản: Thiết Kế & Cài Đặt (Trang 39 - 41)

Tải bản đầy đủ (DOC)

(55 trang)
w