Đồ án môn học CHƯƠNG TRÌNH DỊCH

55 1.2K 8
Đồ án môn học CHƯƠNG TRÌNH DỊCH

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

LỜI NÓI ĐẦU Chương trình dịch là một môn học của ngành khoa học máy tính. Cùng với sự phát triển của các chuyên ngành : Lý thuyết ngôn ngữ hình thức & Ôtômat và các chuyên ngành khác, lý thuyết thiết kế trình biên dịch ngày một hoàn thiện hơn. Ngày nay lý thuyết trình biên dịch đã được ứng dụng không những trong việc thiết kế trình biên dịch cho ngôn ngữ lập trình mà còn trong lĩnh vực trí tuệ nhân tạo - hiểu ngôn ngữ tự nhiên, dịch máy …. Đồ án môn học : CHƯƠNG TRÌNH DỊCH là dịp tốt để cho việc học tập của sinh viên chuyên ngành tin học nắm vững lý thuyết và cách thiết kế trình biên dịch được tốt. Vì thế chúng em thực hiện đồ án, với đề tài 14: Viết trình biên dịch để dịch 1 đoạn chương trình gồm các phát biểu sau: - Phát biểu ghép, if trong C - Các phát biểu kết thúc bằng dấu ; - Các biểu thức trong các phát biểu là các biểu thức số học và logic, gồm các phép toán +, -, *, /, (?:), !, &&, || và các phép toán so sánh. Toán hạng gồm các danh hiệu, hằng số thực và nguyên (kể cả biểu thức) và kiểu array. Độ ưu tiên các phép toán tương tự C. - Thực hiện chuyển đổi kiểu từ nguyên sang thực khi cần thiết. Em xin chân thành cảm ơn sự hướng dẫn tận tình của cô Phan Thị Thu Hồng và sự đóng góp ý kiến của các bạn, nhằm giúp đỡ cho đồ án hoàn thành đúng yêu cầu. Mặc dù đã cố gắng tham khảo nhiều tài liệu nhưng quá trình thực hiện khó tránh khỏi những thiếu sót và hạn chế. Rất mong nhận được những ý kiến nhận xét, đóng góp của thầy cô và các bạn. Nhóm sinh viên thực hiện Nguyễn Thị Diệp Phạm Thị Định Nguyễn Thị Gấm Nguyễn Thị Nụ Lớp : THC 52 MỤC LỤC L I NÓI UỜ ĐẦ 1 A. Những nội dung liên quan tới yêu cầu của đề bài I. Phát biểu ghép và if trong C 1. Phát biểu ghép { Lệnh 1; Lệnh 2; … } 2. Phát biểu if * Dạng 1: If (điều kiện) lệnh S; - Lệnh S có thể gồm nhiều lệnh (khối lệnh). * Dạng 2: If (điều kiện) lệnh S1; else lệnh S2; - Lệnh S1, S2 có thể là một khối lệnh . II. Các phát biểu kết thúc bằng dấu ; Đa số các câu lệnh kết thúc bằng dấu ; dùng để ngăn cách các câu lệnh. Ví dụ như: Phát biểu gán (a=0, gán 0 cho biến a), khai báo biến, hằng (float a, khai báo biến a có kiểu số thực)… III. Các phép toán 1. Các phép toán số học - Phép cộng: + - Phép trừ: - - Phép nhân: * - Phép chia: / 2. Các phép toán logic - Phép và: && (AND) - Phép hoặc: || (OR) - Phép phủ định: ! (NOT) 3. Các phép toán so sánh - Phép nhỏ hơn: < - Phép nhỏ hơn hoặc bằng: <= - Phép lớn hơn: > - Phép lớn hơn hoặc bằng: >= - Phép bằng: == - Phép khác (không bằng): != 4. Toán tử chọn theo điều kiện (Điều kiện) ? biểu thức 1 : biểu thức 2 - Điều kiện đúng thì biểu thức nhận giá trị biểu thức 1, các trường hợp còn lại bằng biểu thức 2. 5. Các toán hạng - Danh hiệu: là tên được dùng để đặt cho các biến, hằng, hàm, kiểu… Tên được đặt theo quy định: gồm các chữ cái, chữ viết, dấu gạch chân, không bắt đầu bằng chữ số, không trùng với khóa. - Các hằng số thực và nguyên: + Hằng số nguyên: 9, -7 + Hằng số thực: 1.523, -0.33E5 - Kiểu array: Kiểu tên_mảng [kích_thước_chiều1][kích_thước_chiều2]…[kích_thước_chiều_n] 6. Độ ưu tiên của phép toán - Có 15 mức ưu tiên, thường thì các toán tử 1 ngôi có độ ưu tiên cao hơn 2 ngôi. Thứ tự ưu tiên được chỉ rõ hơn trong dấu (). 7. Chuyển đổi kiểu nguyên sang kiểu số thực int i; - Chuyển kiểu: (float) i; B. Phân tích từ vựng I. Bảng token Token Lexeme Pattern if If if else Else else void Void Void main Main main type int, float int, float asg = = id Ab, a123, a_bc Các danh hiệu được đặt: bắt đầu chữ cái hoặc dấu gạch chân theo sau là số hoặc chữ, dấu gạch chân và không trùng với khóa num 12, -2 Các số nguyên real 0.35, -3E2 Các số thực begin { { end } } relop1 ==, != Phép so sánh: EQ, NE relop2 <, <=, >, >= Các phép toán so sánh: GT, GE, LT, LE left ( ( right ) ) not ! Phép phủ định and && Phép và or || Phép hoặc semi ; ; coma , , colon : : open [ [ close ] ] aws ? ? op1 +, - Các phép toán số học op2 *, / II. Sơ đồ dịch 1. Định nghĩa các token a. id letter → A | B | … | Z | a | b | … | z digit → 0 | 1 | 2 | … | 9 id → (letter | ‘_’) (letter | digit | ‘_’) * b. num digit → 0 | 1 | 2 | … | 9 num → digit (digit)* c. real real → digit(digit)* (.digit(digit)* | ε ) ((( E | e )( + | - | ε ) digit(digit)*)) | ε ) d. Các phép toán so sánh relop1 → == | != relop2 → < | <= | > | >= e. Các phép toán logic not → ! and → && or → || f. Các phép toán số học op1 → + | - op2 → * | / g. type type → int | float h. Các token khác if → if else → else void → void main → main asg → = begin → { end → } left → ( right → ) semi → ; coma → , colon → : open → [ close → ] aws → ? 2. Sơ đồ dịch * Sơ đồ dịch nhận dạng token relop: * Sơ đồ dịch nhận dạng token relop: Start 0 2 1 3 = < * id * id * num * real * real other * 5 = 4 = ! = 76 > 8 9 = 1 0 other * 3 Start 1 letter | digit | ‘_’ Start 1 3 digit digit 2 letter | ‘_’ * other 2 other * 4 10 ‘.’ other digit digit +‘+’|’- ‘ 8 9 digit 5 7 digit digit other 6 * start digit 2 digit 1 3 other ‘E’|‘e’ ‘E’|‘e’ * Chú ý: Một số trạng thái có thêm một dấu * để chỉ ra đồ thị chuyển đã xử lý quá một ký tự của phần khác. Ký hiệu này được lưu và trả lại khi đoán nhận phần khác. Start 1 5 4 3 2 + / * - * C. Phân tích cú pháp I. Định nghĩa văn phạm tổng quát S → void main left right block block → begin assign_list end assign_list → assign assign_list | ε assign → dec_var | begin assign_list end | pbif 7 8 6 ] ) ( [ 9 10 ! 1 8 19 & & 2 0 15 | | 13 14 12 17 21 11 { } ; : ? , 16 = . ngôn ngữ tự nhiên, dịch máy …. Đồ án môn học : CHƯƠNG TRÌNH DỊCH là dịp tốt để cho việc học tập của sinh viên chuyên ngành tin học nắm vững lý thuyết và cách thiết kế trình biên dịch được tốt. Vì. thuyết thiết kế trình biên dịch ngày một hoàn thiện hơn. Ngày nay lý thuyết trình biên dịch đã được ứng dụng không những trong việc thiết kế trình biên dịch cho ngôn ngữ lập trình mà còn trong. cách thiết kế trình biên dịch được tốt. Vì thế chúng em thực hiện đồ án, với đề tài 14: Viết trình biên dịch để dịch 1 đoạn chương trình gồm các phát biểu sau: - Phát biểu ghép, if trong C - Các

Ngày đăng: 14/04/2015, 08:59

Từ khóa liên quan

Mục lục

  • LỜI NÓI ĐẦU

Tài liệu cùng người dùng

Tài liệu liên quan