Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 44 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
44
Dung lượng
509,5 KB
Nội dung
Khoá luận tốt nghiệp đại học Nguyễn Thị Nha Trang Lời nói đầu ! Chúng ta sống kỷ XXI kỷ CNTT, kinh tế tri thức, xu toàn cầu hóa văn minh tin học Máy tính đời làm thay đổi giới, thâm nhập vào lĩnh vực sống trở thành phơng tiện xử lý thông tin cách nhanh chóng, hiệu Trong phát triển không ngừng nghành tin học việc xây dựng ngôn ngữ lập trình ngày đợc khuyến khích Điều làm xuất không ý tởng xây dựng chơng trình sử dụng ngôn ngữ lập trình viết tiếng Việt nhà lập trình Việt Nam Bởi hầu hết ngôn ngữ lập trình nh Pascal, C, C++, Java v v tiếng Anh nên gây nhiều khó khăn cho ngời lập trình, ngời mà trình độ tiếng Anh hạn chế Thiết nghĩ rằng, ngời Việt Nam không sử dụng ngôn ngữ Việt Nam vào việc xây dựng ngôn ngữ lập trình? Cũng xuất phát từ nguyện vọng đó, đề tài em xin đa ý tởng Xây dựng ngôn ngữ lập trình tiếng Việt Điều thực đợc, thông qua chế biên dịch Trình Biên Dịch, kết hợp với ngôn ngữ C Sharp ( hay gọi C # ) phiên Visual Studio.Net hãng Microsoft để viết ngôn ngữ lập trình tiếng việt Vậy Trình Biên Dịch nghĩa C Sharp nghĩa gì, chúng hoạt động có liên quan với nh ? Tất đợc nghiên cứu đề tài: Tìm hiểu Về Trình Biên Dịch Xây Dựng Ngôn Ngữ Lập Trình Tiếng Việt Đề tài chia làm năm chơng: Chơng 1: Tổng quan trình biên dịch Chơng giới thiệu Trình Biên Dịch, công nghệ Dot Net khái quát chơng trình xây dựng ngôn ngữ lập trình tiếng việt Chơng 2: Bộ phân tích từ vựng Chơng trình bày vấn đề phân tích từ vựng Chơng 3:Bộ phân tích cú pháp Chơng trình bày vấn đề phân tích cú pháp Chơng 4:Bộ xử lý ngữ nghĩa Chơng trình bày vấn đề xử lý ngữ nghĩa -2- Khoá luận tốt nghiệp đại học Nguyễn Thị Nha Trang Chơng 5: Giới thiệu ngôn ngữ Chơng nêu số vấn đề C Sharp ngôn ngữ Tiếng Việt **** -Một chơng trình hay, hoàn hảo đáp ứng nhu cầu thực tế mục tiêu tất quan tâm đến lập trình nói chung chơng trình nói riêng Tuy nhiên lần đầu thực ngôn ngữ mới, trình độ hạn chế thời gian ngắn nên chơng trình giới thiệu đợc ý tởng phạm vi hẹpvà chắn không tránh khỏi thiếu sót, em mong đợc góp ý, giúp đỡ thầy cô khoa bạn Nhân em xin đợc gửi lời cảm ơn chân thành tới thầy giáo Nguyễn Công Nhật nhiệt tình gúp đỡ em hoàn thành đề tài Trong trình thực em nhận đợc nhiều động viên, giúp đỡ thầy cô bạn bè, em xin đợc bày tỏ lòng cảm ơn hứa cố gắng để chơng trình ngày hoàn chỉnh Vinh ngày tháng năm 2006 Nguyễn Thị Nha Trang Lớp: K42E3 Tin Khoa CNTT - Đại Học Vinh Mục Lục Lời nói đầu Mục Lục Chơng 1: Tổng quan trình biên dịch Giới thiệu trình biên dịch 1.1 Cơ chế biên dịch 1.2 Cơ chế thông dịch Giới thiệu văn phạm Automat 2.1 Khái niệm văn phạm 2.2 Automat Khái quát chơng trình .9 Chơng 2: Bộ phân tích từ vựng 10 Vai trò nhiệm vụ 10 Mô hình hoạt động 10 Phát xử lý lỗi .10 Biểu thức quy 10 -3- Khoá luận tốt nghiệp đại học Nguyễn Thị Nha Trang Phơng pháp xây dựng DFA( Determinstic Finite Automation) trực tiếp từ biểu thức quy 11 Xây dựng phân tích từ vựng .12 6.1 Xây dựng vùng đệm nhập 12 6.2 Xây dựng bảng danh hiệu 12 6.3 Sơ đồ dịch 13 Chơng 3: Bộ phân tích cú pháp 15 Giới thiệu chung phân tích cú pháp .15 1.1 Vai trò nhiệm vụ 15 1.2 Phân loại văn phạm .15 1.3 Cây dẫn xuất .15 1.4 Khái niệm câu, dạng câu .15 1.5 Thiết kế văn phạm 15 1.5.1 Văn phạm đệ quy trái trực tiếp 15 1.5.2 Văn phạm đệ quy trái gián tiếp 16 1.5.3 Văn phạm yếu tố trái 17 Bộ phân tích cú pháp đoán nhận trớc không đệ quy 18 2.1 Nguyên tắc phân tích 18 2.2 Mô hình hoạt động .18 2.3 Xây dựng bảng phân tích 20 2.3.1 Xác định tập First kí hiệu cha kết thúc 20 2.3.2 Xác định tập Follow kí hiệu cha kết thúc 20 2.3.3 Giải thuật xây dựng bảng phân tích .20 3.4 Vấn đề xử lý lỗi .21 Bộ phân tích cú pháp thứ tự yếu 25 3.1 Nguyên tắc phân tích 25 3.2 Mô hình hoạt động .25 3.3 Xây dựng bảng phân tích 26 3.3.1 Quan hệ thứ tự yếu .26 3.3.2 Phơng pháp xác định quan hệ thứ tự yếu cho kýhiệu văn phạm 26 3.3.3 Giải thuật xây dựng bảng phân tích 27 Bộ phân tích cú pháp LR 31 4.1 Nguyên tắc phân tích 31 4.2 Mô hình hoạt động .31 4.3 Xây dựng bảng phân tích 35 Chơng Bộ xử lý ngữ nghĩa .43 Tổng quát 43 Các cấu trúc lệnh 44 2.1 Cấu trúc rẽ nhánh 44 2.2 Cấu trúc lệnh Switch 45 2.3 Các cấu trúc lặp 46 2.3.1 Lệnh while 46 2.3.2 Lệnh while 46 2.3.3 Khối lệnh for 47 Chơng 5: Giới thiệu ngôn ngữ 48 -4- Khoá luận tốt nghiệp đại học Nguyễn Thị Nha Trang Giới thiệu ngôn ngữ C Sharp (C#) 49 Giới thiệu ngôn ngữ lập trình tiếng việt 49 2.1 Tập ký hiệu 49 2.2 Luật danh hiệu 49 2.3 Các toán tử 49 2.4 Các lệnh chơng trình 50 2.4.1 Lệnh khai báo biến .50 2.4.2 Các lệnh xử lý điều kiện rẽ nhánh .50 2.4.3 Các câu lệnh lặp 51 Kết luận Tài liệu tham khảo Chơng 1: Tổng Quan trình biên dịch Giới Thiệu Về Trình Biên Dịch: Chúng ta thờng quen thuộc với thuật ngữ thông dịch biên dịch Ví dụ sống thờng nghe ngời làm thông dịch viên tiếng Anh , tiếng Pháp v v ngời nghe câu ngôn ngữ khác dịch lại câu cho ngời khác trình biên dịch đóng vai trò nh ngời thông dịch việc dịch mã văn chơng trình nguồn ngôn ngữ lập trình mã máy Cơ chế thông dịch biên dịch thông dịch tùy theo ngôn ngữ lập trình 1.1 Cơ chế Biên Dịch: Mã văn chơng trình nguồn đợc dịch sang dạng mã trung gian sau mã trung gian đợc dịch xuống mã máy mã máy đợc thực thi Control Process Unit (CPU) Tiêu biểu cho loại công nghệ Dot Net Source Code (Mã nguồn) Front-End (Analysis) Immediate Code (Mã trung gian) JIT (Just In - Time) Back End (Synthesis) Architecture Architecture -5Destination Code (Native Code-mã máy) Destination Code (Native Code-mã máy) Khoá luận tốt nghiệp đại học Nguyễn Thị Nha Trang Mô Hình Biên Dịch Của Công Nghệ Dot Net Cơ chế Thông Dịch: Mã văn chơng trình nguồn đợc dịch sang dạng mã trung gian sau mã trung gian đợc thực thi phần mềm Tiêu biểu cho loại công nghệ Java source code (Mó ngun) Compiler Front End (Analysis) Immediate Code (Mó Trung Gian) Process By JVM (Java Virtual Machine) Mô Hình Biên Dịch Của Công Nghệ Java Các chơng trình biên dịch có tiền xử lý lớn chơng trình thông dịch có tiền xử lý nhỏ nhiều Các chơng trình đợc biên dịch chạy nhanh so với chơng trình đợc thông dịch toàn chơng trình tơng tác trực tiếp với vi xử lý(CPU) không cần chia nhớ trình thông dịch Các chơng trình thông dịch mã lệnh chơng trình đợc thông dịch (Interpreter) phần mềm nên chiếm CPU nhiều chạy chậm Giới Thiệu Văn Phạm Automat: 2.1 Khái niệm Văn Phạm: Văn phạm tập hợp ký hiệu đợc xếp theo trình tự định có ý nghĩa định Một văn phạm thờng đợc bao gồm tập ký hiệu < V, T, S, P > Trong đó: + V tập ký hiệu cha kết thúc (Variable) + T tập ký hiệu kết thúc (Terminal) + S ký hiệu xuất phát văn phạm (Start) + P tập luật sinh (Production) áp dụng luật sinh S Câu ngôn ngữ Dạng luật sinh: -6- Khoá luận tốt nghiệp đại học Nguyễn Thị Nha Trang Ví dụ: Ta có tập luật sinh: P: S aSb S ( dẫn xuất rỗng) ta viết: S aSb ( - hoặc) với: Tập ký hiệu cha kết thúc V={S} Tập ký hiệu kết thúc T={a,b} từ S aSb => S aaSSbb từ S => S aabb => S an bn với n Nh ta nói lệnh an bn đợc sinh văn P 2.2 Automat: Automat mô hình trừu tợng máy tính số Các thành phần: - Bộ phận đọc liệu(Data) từ tập tin vào (một chuỗi ký hiệu không sửa đổi) đọc lần ký hiệu - Vùng nhớ tạm, lu chữ ký hiệu(nội dung thay đổi đợc) - Đơn vị điều khiển: + Có trạng thái nội thuộc tập trạng thái hữu hạn +Trạng thái thay đổi theo hàm chuyển trạng thái - Trạng thái đơn vị điều khiển - Ký hiệu - Thông tin vùng nhớ tạm - Số trạng thái >= < < = ( ) {} ! _ , ; 2.2 Các kiểu liệu: Ta sử dụng ký tự chữ ký tự số để đạt tên cho danh hiệu - 40 - Khoá luận tốt nghiệp đại học Nguyễn Thị Nha Trang Các danh hiệu phải đợc bắt đầu ký tự chữ (Không đợc bắt đầu ký tự số) indentify letter (letterdigit)* Các danh hiệu không đợc chứa ký tự khoảng trắng, không đợc chứa ký tự đặc biệt ví dụ: +, - , : , { v v Chơng trình phân biệt chữ hoa chữ thờng, đặt tên hàm, tên biến tiếng việt theo chuẩn Unicode 2.3 Các toán tử : Toán tử Cộng Trừ Nhân Chia Chia lẩy d Gán So sánh Lớn Nhỏ Khác Lớn Nhỏ Ký Hiệu + * / % = == > < != >= 3) nếu(x < 3) (x 3) (x >= 3) (x y < x = 3) Chơng trình đợc thực thi hàm () Tơng tự hàm main () ngôn ngữ C 2.4 Các lệnh chơng trình: 2.4.1 Lệnh khai báo biến: Chơng trình đơn giản, có hai kiểu liệu kiểu số nguyên kiểu số thực Ví dụ: khai báo biến1, biến2 số nguyên ; khai báo biến3 số thực; 2.4.2 Các lệnh xử lý điều kiện rẽ nhánh: - 41 - Khoá luận tốt nghiệp đại học Nguyễn Thị Nha Trang - Lệnh tơng đơng câu lệnh if then else: Dùng xử lý lệnh biểu thức so sánh lệnh trả giá trị khác không (giá trị đúng).khi khối lệnh nằm khối lệnh đợc thực thi Ví dụ: nếu(x > 3) { hiển thị (x số lớn 3); } - Lệnh khác: Là lệnh mở rộng Khi biểu thức câu lệnh trả giá trị khác không (giá trị đúng) khối lệnh sau mệnh đề dợc thực ngợc lại khối lệnh sau mệnh đề khác đợc thực thi Ví dụ: (x % = = 0) { hiển thị (x số chẵn); } khác { hiển thị(x số lẻ); } - Lệnh lựa chọn tơng đơng câu lệnh switch case Lựa chọn giá trị mệnh đề lựa chọn thực thi khối lệnh trơng ứng mệnh đề Ví dụ: Lựa chọn (x) { 3: hiển thị (x 3); thoát; 4: hiển thị (x 4); thoát; 5: hiển thị (x 5); thoát; } 2.4.3 Các câu lệnh lặp: - Lệnh tơng đơng câu lệnh while do: Nếu điều kiện mệnh đề thực khối lệnh vòng lặp khi điều kiện mệnh đề không Ví dụ: x = 10; - 42 - Khoá luận tốt nghiệp đại học Nguyễn Thị Nha Trang (x>0) { x = x - 1; } - Lệnh thực thi tơng đơng câu lệnh repeat until Thực thi khối lệnh sau mệnh đề thực thi điều kiện mệnh đề đợc thỏa mãn Ví dụ: x = 10; thực thi { x = x -1; } (x = 0); - Lệnh khoảng tơng đơng với câu lệnh for Câu lệnh đợc thực thi mệnh đề khoảng lệnh khởi tạo cho vòng lặp khoảng câu lệnh đợc thực thi lần trớc thực lệnh lặp Tiếp theo câu lệnh khởi tạo vòng lặp câu lệnh đánh giá biểu thức điều kiện Nếu giá trị trả khối lệnh đợc thực thi Sau thực thi xong khối lệnh thân vòng lặp khoảng câu lệnh điều khiển vọng lặp đợc thực thi Và sau biểu thức điều kiện vòng lặp khoảng lại tiếp tục đợc đánh giá vòng lặp lại tiếp tục Vòng lặp khoảng dừng lại giá trị trả biểu thức điều kiện False Ví dụ: khai báo i số nguyên; khoảng (i = 1;i < 10; i = i+1_ { hiển thị (i = + i + \n); } - Lệnh gọi chơng trình con: Chơng trình đợc gọi tạo tơng ứng với ghi hoạt động Trên bảng ghi hoạt động thiết lập số thông số nh điểm trở về, giá trị trả về, tham số hình thức Khi chơng trình kết thúc bảng ghi hoạt động đợc hủy bổ Có hai kiểu truyền tham số truyền trị truyền tham chiếu Nếu tham số hình thức đợc truyền trị tham số thực tơng ứng không bị thay đổi chơng trình kết thúc nh tham số hình thức đợc truyền tham chiếu tham số thực bị thay đổi chơng trình kết thúc Ví dụ: hàm { khai báo a, b số nguyên; a = b = 10; tính_tham_chiếu(a, b); - 43 - Khoá luận tốt nghiệp đại học Nguyễn Thị Nha Trang hiển thị (a = + a +, b = + b + .\n); // a = 11 , b = 10 } hàm tính_tham_chiếu (số nguyên & a, số nguyên b) { a = a + 1; b = b + 1; } Kết Luận Có thể nói công nghệ thông tin có ứng dụng mạnh mẽ sống Xây dựng ngôn ngữ lập trình xuất phát từ nhu cầu thực tế phát triển khoa học, ngôn ngữ lập trình đợc viết tiếng Việt giúp nhà lập trình nhiều việc nắm bắt đợc chơng trình cách hiệu quả, nhanh chóng mà không gặp trở ngại vốn tiếng Anh hạn chế Với kiến thức đợc lĩnh hội nhà trờng, giúp đỡ tận tình thầy giáo Nguyễn Công Nhật, nh động viên, khích lệ bạn bè giúp em hoàn thành đề tài Nhng vốn kiến thức kỷ thuật xây dựng ngôn ngữ lập trình hạn hẹp, tránh khỏi thiếu sót Em mong nhận đợc góp ý chân thành quý thầy cô giáo nh bạn để chơng trình hoàn thiện sớm đợc ứng dụng vào thực tiễn Em xin chân thành cảm ơn! - 44 - Khoá luận tốt nghiệp đại học Nguyễn Thị Nha Trang Tài liệu tham khảo Trần Văn Cảnh - Chơng trình dịch, Khoa CNTT, Đại học vinh Aho, Sethi, Ullman - Trình Biên Dịch: Nguyên lý, Kỹ thuật Công cụ, NXB thống kê, 2000 - 2001 Phơng Lan, Phạm Hữu Khang - Kỹ thuật lập trình ứng dụng C #.Net, NXB Lao động - Xã hội , 2002 Hoàng Đức Hải - Kỹ thuật lập trình C #.Net, NXB Lao động - Xã hội, 2002 - 45 - [...]... //end while 4.3 Xây dựng bảng phân tích: Có nhiều phơng pháp để xây dựng bảng phân tích và phơng pháp SLR (Simple LR) đợc xem là dễ cài đặt nhất Sau đây ta sẽ sử dụng phơng pháp SLR để xây dựng bảng phân tích bớc 1: Xây dựng văn phạm gia tố P bớc 2: Xác định các hàm Closure, Goto bớc 3: Từ P, hàm Closure, Goto xác định tập Canonical LR bớc 4: Từ tập Canonical LR xây dựng DFA bớc 5: Xây dựng bảng phân... cú pháp qua đó ta có thể nhận ra điểm mạnh và điểm yếu của từng phơng pháp, và giới thiệu phDigit ơng pháp xây dựng từng bộ phân tích cú pháp Bộ phân tích cú pháp đoán nhận trớc không đệ quy Bộ phân tích cú pháp thứ tự yếu và bộ phân tích cú pháp LR (Bộ phân tích này đợc sử dụng để xây dựng chơng trình) 1 Giới Thiệu chung về bộ phân tích cú pháp 1.1 Vai trò và nhiệm vụ: - 12 - Khoá luận tốt nghiệp đại... nào Trong chơng này chúng ta sẽ tìm hiểu một bộ phân tích hiệu quả hơn và đây cũng là bộ phân tích cú pháp đợc sử dụng để xây dựng chơng trình 4.1 Nguyên tắc phân tích: Tơng tự Bộ Phân Tích Cú Pháp Thứ Tự Yếu Đây là dạng phân tích cú pháp từ dới lên Xuất phát từ câu nhập, áp dụng lần lợt các luật sinh để thu giảm câu nhập về ký hiệu xuất phát của văn phạm có nghĩa là quá trình phân tích bắt đầu từ các... nút có nhãn A sẽ có các nút con lần lợt là x1, x2 n ( từ trái sang phải ) 1.4 Khái niệm về câu, dạng câu: - Câu: là chuỗi các ký hiệu kết thúc (T ) - Dạng câu: là chuỗi các ký hiệu kết thúc và cha kết thúc ( T + V) 1.5 Thiết kế văn phạm: Cú pháp của các ngôn ngữ lập trình có thể đợc đặc tả bởi các văn phạm phi ngữ cảnh 1.5.1 Văn phạm đệ quy trái trực tiếp: Văn phạm đệ quy trái trực tiếp là văn phạm... ký hiệu là ký hiệu xuất phát của văn phạm và ký hiệu đáy stack nhập là $ thì quá trình phân tích thành công có nghĩa là chuỗi nhập đúng với văn phạm của ngôn ngữ hay câu lệnh nhập viết đúng cú pháp 3.3 Xây dựng bảng phân tích : 3.3.1 Quan hệ thứ tự yếu: Ta nói hai ký hiệu X, Y có quan hệ thứ tự yếu trong các trờng hợp sau đây: -X=Y nếu Z aXYb -X ... khác trình biên dịch đóng vai trò nh ngời thông dịch việc dịch mã văn chơng trình nguồn ngôn ngữ lập trình mã máy Cơ chế thông dịch biên dịch thông dịch tùy theo ngôn ngữ lập trình 1.1 Cơ chế Biên. .. Tóm lại C# ngôn ngữ mẻ có đầy đủ đặc tính hẳn ngôn ngữ lập trình khác: ngôn ngữ đơn giản, ngôn ngữ đại, ngôn ngữ hớng đối tợng, ngôn ngữ mạnh mẽ mềm dẻo, ngôn ngữ có từ khóa, ngôn ngữ hớng module... Trang Trình biên dịch đợc xây dựng trình thông dịch. Khi chơng trình thực thi, toàn văn chơng trình nguồn đợc nạp vào nhớ .Trình biên dịch phân biệt chữ hoa chữ thờng.Trong trình biên dịch chơng trình