Lý thuyết ngôn ngữ hình thức và ôtômát - Chương 5
Thông tin tài liệu:
Nội dung trích xuất từ tài liệu:
Lý thuyết ngôn ngữ hình thức và ôtômát - Chương 5 CHƯƠNG V: GIỚI THIỆU VỀ TRÌNH BIÊN DỊCH 5.1. NGÔN NGỮ LẬP TRÌNH. 5.1.1. Mở đầu: Từ ngàn xưa con người muốn giao tiếp với nhau phải dùng ngôn ngữ. Vậy người giao tiếp với máy tính tất nhiên cũng thông qua ngôn ngữ. Con người muốn máy tính thực hiện công việc, phải viết các yêu cầu đưa cho máy bằng ngôn ngữ máy hiểu được. Việc viết các yêu cầu, ta gọi là lập trình (programming). Ngôn ngữ dùng để lập trình được gọi là ngôn ngữ lập trình (programming language). Viết chương trình để giải quyết vấn đề sẽ dễ dàng và tự nhiên hơn nếu ngôn ngữ lập trình gần với vấn đề cần giải quyết. Có nghĩa là ngôn ngữ phải chứa đựng các cấu trúc thuật ngữ, phần tử dùng để miêu tả vấn đề và không phụ thuộc vào máy tính cụ thể. Các ngôn ngữ lập trình có tính chất như trên được gọi là ngôn ngữ cấp cao. Nhưng máy tính chỉ hiểu, chỉ chấp nhận ngôn ngữ cấp thấp riêng của mình, đó là chuỗi các số 0 và 1, chuỗi số đó lại không gần gũi chút nào đối với con người. Việc phân cấp ngôn ngữ lập trình được dựa trên cơ sở của tính không phụ thuộc với máy tính ngày càng cao của các ngôn ngữ. Phân loại: 1) Ngôn ngữ máy (machine language), 2) Hợp ngữ (assembly language), 3) Ngôn ngữ cấp cao (higher-level language). Bởi vì máy tính chỉ có thể hiểu ngôn ngữ máy cho nên một chương trình viết trong ngôn ngữ cấp cao cuối cùng rồi cũng được dịch sang ngôn ngữ máy. Công cụ thực hiện việc dịch đó được gọi là chương trình dịch (translator). Chương trình dịch được chia làm hai loại: trình biên dịch (compiler) và trình thông dịch (interpreter). − Trình biên dịch: chuyển một chương trình viết trong ngôn ngữ cấp cao − chương trình nguồn sang chương trình trong ngôn ngữ cấp cao khác hoặc ngôn ngữ máy − chương trình đích. + Thời gian chuyển một chương trình nguồn sang chương trình đích được gọi là thời gian dịch (compile time). + Thời gian mà chương trình đích được thực thi được gọi là thời gian thực Dữ liệu thi (run time). Chương trình Chương trình Máy tính Trình Kết quả nguồn đích thực thi biên dịch Thời gian dịch Thời gian thực thi 76 Như vậy, đối với trình biên dịch, chương trình nguồn và dữ liệu được xử lý trong thời gian khác nhau, đó là thời gian dịch và thời gian thực thi. − Trình thông dịch: quá trình xử lý dạng bên trong của chương trình nguồn và dữ liệu cùng một thời gian. Chương trình Trình Kết quả nguồn thông dịch Dữ liệu Một số trình thông dịch làm việc như sau: phân tích từng phát biểu và thực thi luôn. Hiện nay trình thông dịch đa phần áp dụng kỹ thuật của trình biên dịch là biên dịch chương trình nguồn sang dạng mã trung gian. Từ mã trung gian sẽ được thực thi bằng trình thông dịch. Đặc tả ngôn ngữ lập trình: để đặc tả ngôn ngữ lập trình, tối thiểu ta cần định nghĩa: 1. Tập các ký hiệu cần dùng trong các chương trình hợp lệ. 2. Tập các chương trình hợp lệ. 3. Nghĩa của từng chương trình hợp lệ. Việc định nghĩa tập các ký hiệu của một ngôn ngữ thật dễ dàng, ta chỉ cần liệt kê chúng. Song định nghĩa tập chương trình, gọi là hợp lệ thì quả là một công việc khó khăn hơn nhiều. Bởi vì thật là khó để xác định thế nào là một chương trình hợp lệ. Khi đặc tả ngôn ngữ lập trình, ta thường định nghĩa lớp các chương trình bằng tập các luật văn phạm, ta có thể tạo nên cả những chương trình còn nghi vấn về tính hợp lệ. Chẳng hạn, trong Fortran cho phép phát biểu sau: L GOTO L là hợp lệ. Mặc dù nếu phát biểu này mà được thực hiện thì sẽ là vòng lặp vô tận, không giải quyết được gì cả. Vì thế chương trình mà ta coi là hợp lệ phải được hiểu trong nghĩa hẹp. Khó khăn thứ ba cũng là vấn đề khó nhất của đặc tả ngôn ngữ là việc định nghĩa ý nghĩa của một chương trình hợp lệ. Có ba phương pháp để xác định nghĩa của chương trình hợp lệ. Phương pháp thứ nhất là định nghĩa bằng phép ánh xạ: ánh xạ mỗi chương trình vào một câu trong ngôn ngữ mà nghĩa của nó ta hiểu được. Phương pháp thứ hai, xác định ý nghĩa của chương trình bằng một máy lý tưởng (idealized machine). Nghĩa của chương trình có thể được đặc tả trong ngôn 77 từ của máy lý tưởng này. Như vậy máy lý tưởng trở thành bộ thông dịch cho ngôn ngữ. Phương pháp thứ ba, nghĩa của một chương trình nguồn chính là sản phẩm xuất ra của trình biên dịch, khi nó dịch chương trình nguồn. Trình biên dịch được dặc tả như là tập các cặp (x, y), với x là chương trình nguồn và y là chương trình đích, là chương trình mà x sẽ được dịch sang y. Giả sử cặp (x, y) đã có trước, bây giờ ta quan tâm đến cấu trúc của thiết bị để khi nhận x là đầu vào thì sinh ra y ở đầu ra. Ta coi tập (x, y) là sự biên dịch. Nếu mỗi chuỗi x được định nghĩa trên bảng chữ Σ và chuỗi y được định nghĩa trên bảng chữ ∆ thì biên dịch là phép ánh xạ từ Σ* đến ∆*. 5.1.2. Cú pháp và ngữ nghĩa: Để tiện lợi hơn trong đặc tả và hiện thực sự biên dịch, ta coi sự biên dịch bao gồm hai phép chiếu đơn giản hơn. Thứ nhất là phép ánh xạ cú pháp (syntactic mapping), nó ánh xạ một chương trình viết trong ngôn ngữ nguồn sang cấu trúc là đối số của phép ánh xạ tiếp theo, đó là phép ánh xạ ngữ nghĩa (semantic mapping). Cấu trúc của phép ánh xạ cú pháp là cây cú pháp (syntactic tree). Sau đây là thí dụ cây cú pháp được xây dựng như thế nào trên chuỗi nhập vào là một câu tiếng Anh. Mỗi câu tiếng Anh được bẻ ra thành những ký hiệu cú pháp nhờ vào các luật văn phạ ...
Tìm kiếm theo từ khóa liên quan:
ngôn ngữ hình thức Lý thuyết ôtômát máy turing trình biên dịch ô tô mát hữu hạnGợi ý tài liệu liên quan:
-
Chuyên đề: Nghiên cứu Ngôn ngữ hình thức, Văn phạm phi ngữ cảnh và Automata đẩy xuống
84 trang 370 0 0 -
Giáo trình Toán rời rạc: Phần 1 - Đỗ Đức Giáo
238 trang 218 0 0 -
Nghiên cứu thuật toán lý thuyết: Phần 2
61 trang 131 0 0 -
Bài giảng Đặc tả hình thức: Chương 1 - PGS.TS. Vũ Thanh Nguyên
21 trang 76 0 0 -
Giáo trình Ôtômát và ngôn ngữ hình thức: Phần 1 - Trường ĐH Công nghiệp Vinh
62 trang 70 0 0 -
Bài giảng Tin học đại cương - Chương 6: Thuật toán và ngôn ngữ lập trình
31 trang 40 0 0 -
Lý thuyết Ngôn ngữ hình thức và Automata
93 trang 36 0 0 -
186 trang 30 0 0
-
Cơ sở Toán trong kỹ thuật lập trình: Phần 2
175 trang 29 0 0 -
Cơ sở Toán trong kỹ thuật lập trình: Phần 1
183 trang 28 0 0 -
Bài giảng Trình biên dịch: Chương 4, 5 - TS. Vũ Đức Lung
0 trang 27 0 0 -
Bài giảng môn lý thuyết ôtômát và ngôn ngữ hình thức - Chương 4
0 trang 26 0 0 -
Ứng dụng trong tin học Toán rời rạc
410 trang 26 0 0 -
Giáo trình Ôtômát và ngôn ngữ hình thức: Phần 1
108 trang 25 0 0 -
359 trang 24 0 0
-
Bài giảng môn lý thuyết ôtômát và ngôn ngữ hình thức - Chương 3
0 trang 24 0 0 -
Bài giảng Kiến trúc máy tính: Tuần 1 - ĐH Công nghệ thông tin
39 trang 23 0 0 -
Giáo trình Otomat và ngôn ngữ hình thức
84 trang 23 0 0 -
Bài giảng môn lý thuyết ôtômát và ngôn ngữ hình thức - Chương 6
0 trang 22 0 0 -
Tập bài giảng Ngôn ngữ hình thức
246 trang 21 0 0