Nghiên cứu ứng dụng ANTLR để xử lý các thông điệp trong phần mềm đa ngữ

26 1.1K 0
Nghiên cứu ứng dụng ANTLR để xử lý các thông điệp trong phần mềm đa ngữ

Đ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

Header Page of 126 BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC ĐÀ NẴNG TRẦN THỊ BÍCH HẰNG NGHIÊN CỨU ỨNG DỤNG ANTLR ĐỂ XỬ LÝ CÁC THÔNG ĐIỆP TRONG PHẦN MỀM ĐA NGỮ Chuyên ngành: Khoa học máy tính Mã số: 60.48.01 TÓM TẮT LUẬN VĂN THẠC SĨ KỸ THUẬT Đà Nẵng - Năm 2013 Footer Page of 126 Header Page of 126 Công trình hoàn thành ĐẠI HỌC ĐÀ NẴNG Người hướng dẫn khoa học: PGS.TS VÕ TRUNG HÙNG Phản biện : TS HUỲNH HỮU HƯNG Phản biện : PGS.TS ĐOÀN VĂN BAN Luận văn bảo vệ trước Hội đồng chấm Luận văn tốt nghiệp thạc sĩ Kỹ thuật họp Đại học Đà Nẵng vào ngày 19 tháng năm 2013 Có thể tìm hiểu luận văn tại: - Trung tâm Thông tin - Học liệu, Đại Học Đà Nẵng Footer Page of 126 Header Page of 126 MỞ ĐẦU Lý chọn đề tài Trong nhận dạng ngôn ngữ dựa máy tính, ANTLR (viết tắt cho ANother Tool for Language Recognition) phân tích cú pháp dựa phân tích LL(k) Phiên trước ANTLR phân tích cú pháp PCCTS (viết tắt Purdue Compiler Construction Tool Set), phát triển lần đầu vào năm 1989 phát triển Trong đề tài này, nghiên cứu việc ứng dụng ALTLR để thử nhiệm công cụ ANTLR để xử lý thông điệp đa ngữ Đây lĩnh vực chưa nghiên cứu, phổ biến rộng rãi Việt Nam Vì vậy, chọn đề tài “Nghiên cứu ứng dụng ANTLR để xử lý thông điệp phần mềm đa ngữ” làm đề tài tốt nghiệp cao học Mục tiêu nhiệm vụ nghiên cứu Mục tiêu đề tài ứng dụng ngôn ngữ đặc tả phân tích cú pháp ANTLR vào xử lý thông điệp đa ngữ Nhiệm vụ đề tài bao gồm: nghiên cứu c sở lý thuyết đặc tả hình thức, nghiên cứu c sở lý thuyết chư ng trình dịch, nghiên cứu ngôn ngữ ANTLR, nghiên cứu c sở lý thuyết thư viện GetAMsg sau vận dụng ANTLR vào quản lý thông điệp đa ngữ sử dụng GetAMsg Đối tượng phạm vi nghiên cứu Đối tượng nghiên cứu bao gồm: vấn đề liên quan đến đặc tả hình thức, vấn đề liên quan đến chư ng trình dịch, ngôn ngữ ANTLR ứng dụng Phạm vi nghiên cứu d ng ngôn ngữ ANTLR để xử lý thông điệp GetAMsg Footer Page of 126 Header Page of 126 Phương pháp nghiên cứu Trong trình thực hiện, sử dụng hai phư ng pháp nghiên cứu tài liệu thực nghiệm Với phư ng pháp đầu tiên, tiến hành thu thập nghiên cứu tài liệu có liên quan đến đề tài Phư ng pháp nghiên cứu công cụ ANTLR sẵn có, tiến hành thử nghiệm Cuối c ng đánh giá kết nêu hướng phát triển đề tài Ý nghĩa khoa học thực tiễn đề tài Đề tài mang ý nghĩa khoa học góp phần nghiên cứu phổ biến hai công cụ mẻ Việt Nam ANTLR GetAMsg Đây tài liệu tham khảo quan trọng cho sinh viên, học viên cao học, nghiên cứu sinh xử lý ngôn ngữ tự nhiên đa ngữ hóa phần mềm Ngoài đề tài mang ý nghĩa thực tiễn: ANTLR công cụ ngôn ngữ cung cấp tự xây dựng trình biên dịch, tự động hóa việc kiểm tra tính đắn ngữ pháp, từ vựng Đây kỹ thuật chưa nghiên cứu phổ biến Việt Nam, điều mở hướng nghiên cứu, ứng dụng Cấu trúc luận văn Cấu trúc luận văn tổ chức thành chư ng Chư ng đầu giới thiệu phần nghiên cứu tổng quan đặc tả phần mềm chư ng trình dịch Chư ng hai giới thiệu ngôn ngữ ANTLR ứng dụng Chư ng ba thử nhiệm công cụ ANTLR để xử lý thông điệp đa ngữ Cuối c ng kết luận đề tài Footer Page of 126 Header Page of 126 CHƯƠNG NGHIÊN CỨU TỔNG QUAN VỀ ĐẶC TẢ PHẦN MỀM, TRÌNH BIÊN DỊCH, PHẦN MỀM ĐA NGỮ 1.1 TỔNG QUAN VỀ ĐẶC TẢ PHẦN MỀM Việc cạnh tranh ngành du lịch minh họa hai phư ng diện, nước quốc tế 1.1.1 Khái niệm đặc tả phần mềm Đặc tả (specification) định nghĩa từ điển tiếng Việt (1997): Mô tả thật chi tiết phận đặc biệt tiêu biểu để làm bật chất toàn thể” Theo Computer Dictionary Microsoft Press (1994), đặc tả mô tả chi tiết: Về mặt phần cứng, đặc tả cung cấp thông tin thành phần, khả yếu tố kỹ thuật máy tính Về mặt phần mềm, đặc tả mô tả môi trường hoạt động chức chương trình 1.1.2 Các phương pháp đặc tả Có thể chia đặc tả yêu cầu làm hai loại: đặc tả phi hình thức (ngôn ngữ tự nhiên) đặc tả hình thức (dựa kiến trúc toán học) 1.2 TỔNG QUAN VỀ TRÌNH BIÊN DỊCH 1.2.1 Khái niệm trình biên dịch Trình biên dịch chư ng trình làm nhiệm vụ đọc chư ng trình viết ngôn ngữ - ngôn ngữ nguồn (source language) dịch thành chư ng trình tư ng đư ng ngôn ngữ khác - ngôn ngữ đích (target languague) Cấu trúc trình bao gồm giai đoạn: phân tích từ vựng; phân tích cú pháp; phân tích ngữ nghĩa; sinh mã trung gian; tối ưu mã sinh mã đích 1.2.2 Mô hình phân tích- tổng hợp trình biên dịch Chư ng trình dịch thường bao gồm trình: phân tích tổng hợp - Phân tích → đặc tả trung gian Footer Page of 126 Header Page of 126 - Tổng hợp → chư ng trình đích Trong trình phân tích chư ng trình nguồn phân rã thành cấu trúc phân cấp, thường dạng - cú pháp (syntax tree) mà có nút toán tử nhánh toán hạng 1.2.3 Môi trường trình biên dịch Một chư ng trình nguồn phân thành module lưu tập tin riêng rẻ Công việc tập hợp lại tập tin thường giao cho chư ng trình riêng biệt gọi tiền xử lý (preprocessor) Bộ tiền xử lý "bung" ký hiệu tắt gọi macro thành câu lệnh ngôn ngữ nguồn 1.2.4 Các giai đoạn biên dịch Một trình biên dịch chia thành giai đoạn: phân tích từ vựng, phân tích cú pháp, phân tích ngữ nghĩa, sinh mã trung gian, tối ưu mã, sinh mã đích 1.2.5 Phân tích từ vựng (Lexical Analysis) Phân tích từ vựng giai đoạn trình biên dịch Nhiệm vụ chủ yếu đọc ký hiệu đầu vào tạo chuỗi mã thông báo token sử dụng phân tích cú pháp Sự tư ng tác thể hình sau, phân tích từ vựng thiết kế thủ tục gọi phân tích cú pháp, trả mã thông báo gọi 1.2.6 Phân tích cú pháp (Syntax Analysis) Giai đoạn phân tích cú pháp thực công việc nhóm thẻ từ chư ng trình nguồn thành ngữ đoạn văn phạm (grammatical phrase), mà sau trình biên dịch tổng hợp thành phẩm Thông thường, ngữ đoạn văn phạm biểu diễn dạng phân tích cú pháp (parse tree) với: - Ngôn ngữ đặc tả luật sinh - Phân tích cú pháp dựa vào luật sinh để xây dựng phân Footer Page of 126 Header Page of 126 tích cú pháp 1.2.7 Phân tích ngữ nghĩa (Semantic Analysis) Giai đoạn phân tích ngữ nghĩa thực việc kiểm tra xem chư ng trình nguồn có chứa lỗi ngữ nghĩa hay không tập hợp thông tin kiểu cho giai đoạn sinh mã sau Một phần quan trọng giai đoạn phân tích ngữ nghĩa kiểm tra kiểu (type checking) ép chuyển đổi kiểu 1.2.8 Sinh mã trung gian Sau phân tích ngữ nghĩa, số trình biên dịch tạo dạng biểu diễn trung gian chư ng trình nguồn Chúng ta xem dạng biểu diễn chư ng trình dành cho máy trừu tượng Chúng có đặc tính quan trọng: dễ sinh dễ dịch thành chư ng trình đích 1.2.9 Tối ưu mã Giai đoạn tối ưu mã cố gắng cải thiện mã trung gian để có mã máy thực nhanh h n Một số phư ng pháp tối ưu hóa hoàn toàn bình thường Có khác biệt lớn khối lượng tối ưu hoá mã trình biên dịch khác thực Trong trình biên dịch gọi "trình biên dịch chuyên tối ưu", phần thời gian đáng kể dành cho giai đoạn 1.2.10 Sinh mã đích Giai đoạn cuối biên dịch sinh mã đích, thường mã máy mã hợp ngữ Các vị trí vùng nhớ chọn lựa cho biến chư ng trình sử dụng Sau đó, thị trung gian dịch thành chuỗi thị mã máy Vấn đề định việc gán biến cho ghi 1.3 TỔNG QUAN VỀ PHẦN MỀM ĐA NGỮ 1.3.1 Bối cảnh toàn cầu hóa phần mềm Trước đây, phần mềm, trang Web thường viết Footer Page of 126 Header Page of 126 tiếng Anh thực tế có nhiều người giới đọc hiểu tiếng Anh Có nhiều người sử dụng tiếng Anh họ yêu thích làm việc phần mềm website ngôn ngữ mẹ đẻ (native language) muốn chuyển sang ngôn ngữ tiếng Anh nhiều thời gian công sức Do nhu cầu đa ngữ hóa phần mềm đời 1.3.2 Khái niệm phần mềm đa ngữ Phần mềm đa ngữ (Multilingual Software) phần mềm cho phép người sử dụng chọn lựa ngôn ngữ (ví dụ: tiếng Anh, tiếng Pháp, tiếng Việt ) làm việc với phần mềm Người sử dụng chọn lựa ngôn ngữ sử dụng cho mình, nay, có phần mềm đáp ứng nhu cầu chưa thực nhiều 1.3.3 Nhu cầu đa ngữ hóa phần mềm Đa dạng hóa ngôn ngữ sản phẩm phần mềm xu hướng nhà sản xuất phần mềm nay, tính toàn cầu hóa phư ng hướng mở rộng thị trường quốc tế Lựa chọn đối tác dịch chuyên nghiệp phư ng pháp mà nhà sản xuất phần mềm sử dụng Nhu cầu đa ngữ hóa phần mềm đặt cách tự nhiên Cùng với trình toàn cầu hóa, việc đa ngữ hóa địa hóa phần mềm vấn đề nhà khoa học, nhà sản xuất phần mềm quan tâm 1.3.4 Các mô hình tổ chức quản lý thông điệp Có mô hình tổ chức phần mềm đa ngữ sử dụng là: Mô hình 1: Phư ng pháp truyền thống thông điệp viết gắn liền với mã nguồn chư ng trình Với mô hình nay, người ta viết chư ng trình cho tiếng Anh, sau tạo sửa lại cho tiếng Pháp Mô hình 2: Phư ng pháp tách rời mã nguồn chư ng trình với liệu ngôn ngữ Các liệu ngôn ngữ (thông điệp, hàm ) Footer Page of 126 Header Page of 126 đặt tập tin dùng cho tất ngôn ngữ Mô hình 3: Sử dụng phư ng pháp tách rời mã nguồn với liệu ngôn ngữ liệu ngôn ngữ lưu trữ riêng biệt cho ngôn ngữ, ứng với ngôn ngữ tập tin chứa liệu ngôn ngữ 1.3.5 Một số công cụ quản lý thông điệp đa ngữ Hiện có hệ thống Catgets, Ariane-G5, Gettext, GetAMsg cho phép “bản địa hóa” (localisation) dễ dàng tập tin thông điệp chứng chưa xử lý biến đổi ngôn ngữ bên thông điệp 1.4 BỘ CÔNG CỤ GETTEXT 1.4.1 Giới thiệu Gettext Gettext: phần mềm mã nguồn mở phục vụ địa hóa phần mềm dùng cho số ngôn ngữ thông dụng Gettext hỗ trợ dịch thông điệp từ ngôn ngữ ngôn ngữ mà người sử dụng đọc Hiện Gettext hỗ trợ địa hóa cho 12 ngôn ngữ khác ngôn ngữ sử dụng hệ thống mã hóa khác hay chuyển mã hệ thống mã UTF-8 (Unicode Transformation Format 8- Bit) 1.4.2 Quy trình xử lý Gettext Trong trình đa ngữ hóa, ta chủ yếu làm việc với tập tin: - Tập tin POT (Portable Object Template): bước file tạo dùng phần mềm hay script để quét mã nguồn dựa vào marked function bên Mục đích lấy language mặc định mã nguồn - Tập tin PO (Portable Object): bước ta dịch toàn language quét bước sang ngôn ngữ mà muốn - MO (Machine Object) files: bước cuối dịch file PO sang mã máy để tối ưu cho việc sử dụng Footer Page of 126 Header Page 10 of 126 1.4.3 Tạo tập tin mẫu PO Sau chuẩn bị xong nguồn, tiến hành tạo tập tin mẫu PO, phần giải thích cách sử dụng xgettext cho mục đích Xgettext tạo tập tin có tên domainname.po, ta nên đổi tên thành domainname.pot 1.4.4 Tạo tập tin PO Khi bắt đầu dịch mới, tạo tập tin LANG.po,như tập tin mẫu package.pot Cách dễ để thực việc sử dụng chư ng trình ‘msginit’ Chư ng trình msginit tạo tập tin PO mới, khởi tạo thông tin với giá trị lấy từ môi trường người sử dụng Nếu tập tin inputfile nào, thư mục tìm kiếm tập tin POT 1.4.5 Cập nhật tập tin PO, gọi chương trình msgmerge Thêm thư mục directory vào danh sách thư mục Tập tin nguồn tìm kiếm danh sách thư mục này, kết tập tin po ghi vào thư mục hành 1.4.6 Tạo tập tin MO Offset O offset T hai bảng mô tả chuỗi, mô tả chuỗi sử dụng 32 bít số nguyên, để đếm byte đầu tập tin Bảng chứa mô tả chuỗi chuẩn, xếp chuỗi tăng dần theo thứ tự từ điển Bảng thứ hai chứa mô tả chuỗi dịch song song với bảng thứ để tìm chuỗi dịch tư ng ứng cho phép truy cập tới mảng mảng thứ hai với số 1.5 BỘ CÔNG CỤ GETAMSG 1.5.1 Mô hình hóa thông điệp có chứa biến nhớ biến thể Trong chư ng trình máy tính, thường gặp thông điệp (message) có chứa biến nhớ (variable) Những biến nhớ kéo theo biến đổi bên thông điệp, nguyên nhân tạo biến đổi tư ng hợp giống, Footer Page 10 of 126 10 Header Page 12 of 126 CHƯƠNG CÔNG CỤ ANTLR 2.1 KHÁI QUÁT ANTLR 2.1.1 Khái niệm ANTLR ANTLR (ANother Tool for Language Recognition) công cụ nhận dạng ngôn ngữ cung cấp, xây dựng trình biên dịch từ mô tả ngữ pháp có chứa hành động loạt ngôn ngữ mục tiêu ANTLR tự động hóa xây dựng nhận dạng ngôn ngữ Từ ngữ pháp quy, ANTLR tạo chư ng trình xác định xem câu phù hợp với ngôn ngữ Nói cách khác, chư ng trình để viết chư ng trình khác cách thêm vào đoạn mã để ngữ pháp, nhận diện trở thành phiên dịch hay thông dịch viên ANTLR cung cấp hỗ trợ tuyệt vời cho phân tích cú pháp trừu tượng (AST-Abstract Syntax Tree), hình thức xây dựng dịch thuật, sử dụng phần mềm dịch tự động 2.1.2 Chức ANTLR ANTLR đọc tập tin ngôn ngữ mô tả gọi ngữ pháp tạo số tập tin mã nguồn tập tin phụ trợ khác ANTLR tạo công cụ: - Phân tích từ vựng (Lexer): đọc ký tự đầu vào byte dòng (tức ký tự, liệu nhị phân, ), phân chia token cách sử dụng mẫu định tạo dòng token đầu Nó đánh dấu số token khoảng trắng ẩn cách sử dụng giao thức phân tích cú pháp ANTLR - Phân tích cú pháp (Parser): trình phân tích văn bản, thực chuỗi token, để xác định cấu trúc ngữ pháp (nhiều h n h n) ngữ pháp quy Phân tích cú pháp sử dụng thuật ngữ ngôn ngữ học Footer Page 12 of 126 11 Header Page 13 of 126 2.1.3 Ưu nhược điểm ANTLR a Ưu điểm ANTLR mang lại tính ưu việt như: - Tự động tạo trình phân tích từ vựng trình phân tích cú pháp; - Tự động sinh mã; - Linh hoạt xử lý lỗi hiệu quả; - ANTLR kèm với mã nguồn mở hoàn toàn không giống nhiều hệ thống khác hoàn toàn không hạn chế việc sử dụng b Nhược điểm ANTLR phân tích cú pháp dựa phân tích LL(k) Yacc Bison hai phân tích cú pháp tư ng tự lại dựa phân tích cú pháp LALR (Look-Ahead Left Right) Trong đó, phân tích cú pháp LALR công cụ đọc BNF ngữ pháp tạo phần mềm phân tích ngôn ngữ LALR có khả phân tích cú pháp tập tin viết ngôn ngữ máy tính định rõ ngữ pháp BNF (Backus– Naur Form) để biểu diễn văn phạm phi ngữ cảnh LALR phân tích nhanh h n xử lý theo chế độ bảng, ANTLR sử dụng dòng dõi phân tích cú pháp đệ quy h i chậm so với Yacc Bison 2.1.4 Phiên ANTLR ANTLR phiên công cụ xử lý ngôn ngữ phát hành PCCTS năm 1990 Ngữ pháp ANTLR mô tả tùy chọn bao gồm mã code văn hay gọi ngôn ngữ mục tiêu Các ngôn ngữ mục tiêu bao gồm Java, C #, Objective C, C, Python Ruby có C++, Perl6 Oberon ANTLR giúp tiết kiệm thời gian nguồn lực cách tự động xây dựng công cụ xử lý ngôn ngữ Nó công cụ sinh trình biên dịch trình biên dịch có Footer Page 13 of 126 12 Header Page 14 of 126 tác động tích cực hiệu phát triển Ngoài ra, nhiều tính ANTLR bao gồm công cụ phân tích cải tiến, sức mạnh tăng cường đáng kể khả phân tích cú pháp thông qua phân tích cú pháp LL 2.1.5 Các phần mềm cần thiết - Phần mềm Java JDK - Java Development Kit (không phải JRE) - Phần mềm ANTLR 4.0 giải nén chuyển vào thư mục lib lưu ổ đĩa C - Eclipse Galileo giải nén chuyển vào thư mục lib lưu ổ đĩa C - Các công cụ Dynamic Languages Toolkit Core Frameworks (DLTK), Graphical Editing Framework (GEF) Graphical Editing Framework Zest Visualization Toolkit SDK (Zest) cài đặt vào Eclipse 2.1.6 Tập tin ngữ pháp quy tắc ANTLR a Tập tin ngữ pháp ANTLR Chúng ta có nhầm lẫn tất phần khác tập tin ngữ pháp ANTLR, hình sau dẫn rõ tập tin ngữ pháp ANTLR: Hình 2.1 : Các ngữ pháp ANTLR Footer Page 14 of 126 13 Header Page 15 of 126 (1) Tất đặt phần tiêu đề tập tin ngữ pháp đặt đầu trang tất file java tạo ANTLR Chúng ta thường sử dụng phần để đặt định nghĩa gói (2) Phần câu lệnh cho ngữ pháp định tập tin (3) Sau đó, có đặc điểm kỹ thuật ngữ pháp, chí trông giống khai báo lớp (4) Dưới phần tùy chọn, n i định tùy chọn cho ngữ pháp Chúng ta nhấn Ctrl + Space ANTLR Studio để xem tùy chọn có sẵn (5) Phần token sử dụng để xác định token “ảo” mà không khai báo lexer Đây thường sử dụng TreeParsers để xác định token “ảo” (6) Đặt công cụ "bên trong" định nghĩa lớp Chúng ta thường sử dụng để xác định số phư ng pháp t y chỉnh cho phân tích cú pháp b Quy tắc ANTLR Xem quy định theo hình vẽ sau: Hình 2.2 : Các quy tắc ANTLR Footer Page 15 of 126 14 Header Page 16 of 126 (7) (2) (3) (4) Các lệnh thực với hàm Chúng ta định đối số cho quy tắc, hiển thị (int a), giá trị trả trường hợp ngoại lệ không tuân thủ quy tắc (8) Phần tùy chọn cho phép xác định số tùy chọn cụ thể quy tắc (9) Lời gọi giá trị (10) Chúng ta xử lý tùy chỉnh ngoại lệ phần ngoại lệ 2.1.7 ANTLRWorks ANTLRWorks cho phép người dùng chỉnh sửa, hình dung, giải thích gỡ lỗi thông qua giao diện dễ sử dụng, đồ họa người dùng Nó kết hợp trình soạn thảo ngữ pháp nhận thức tuyệt vời với thông dịch viên cho tạo mẫu nhanh trình gỡ lỗi ngôn ngữ để cô lập lỗi ngữ pháp 2.2 CÁC TÍNH NĂNG CỦA ANTLR 2.2.1 Định nghĩa lớp phân tích cú pháp (Parser Class Definitions) Một lớp class tùy chọn số text tùy ý kèm theo {} Kèm theo dấu ngoặc nhọn {} không sử dụng để phân định lớp class khó để kết hợp dấu ngoặc phải tập tin với ngoặc bên trái phía tập tin Thay vào đó, lớp phân tích cú pháp giả định tiếp tục xuất lớp 2.2.2 Định nghĩa lớp phân tích từ vựng (Lexical Analyzer Class Definitions) Một lớp phân tích cú pháp đối tượng phân tích cú pháp biết làm để áp dụng cấu trúc ngữ pháp liên quan đến dòng đầu vào thẻ token Để thực phân tích từ vựng cần phải định lớp lexer mô tả làm để phá vỡ dòng ký tự nhập vào thành dòng thẻ token Cú pháp Footer Page 16 of 126 15 Header Page 17 of 126 tư ng tự lớp phân tích cú pháp 2.3 PHÂN TÍCH TỪ VỰNG VỚI ANTLR 2.3.1 Quy tắc từ vựng Lexcial Quy tắc định nghĩa ngữ pháp lexer phải có tên bắt đầu với ký tự hoa Quy tắc lexer xử lý cách thức xác quy tắc phân tích cú pháp đó, định đối số giá trị trả lại, lexer quy tắc có biến địa phư ng (local variables) sử dụng đệ quy Các quy tắc sau xác định quy tắc gọi ID có sẵn loại mã thông báo phân tích cú pháp 2.3.2 Bỏ qua ký tự Sử dụng quy tắc bỏ qua rule ignored để có ký tự phù hợp, thiết lập loại Token.SKIP Bỏ qua token có hiệu lực cho lexer để thiết lập lại cố gắng cho token khác Token bỏ qua không gửi trở lại để phân tích cú pháp 2.3.3 Trả lại giá trị Tất quy tắc tự động trả đối tượng mã thông báo (theo lý thuyết) có nội dung văn text phù hợp cho quy tắc loại token Để định user-defined xác định giá trị trả lại, xác định giá trị trả 2.3.4 Từ khóa (Keywords) chuỗi ký tự (Literals) Nhiều ngôn ngữ có chung nguyên tắc "nhận diện" từ vựng từ khóa trường hợp đặc biệt mô hình nhận dạng Điều thường mâu thuẫn với từ khoá ANTLR giải vấn đề cách cho phép đặt từ khóa cố định vào bảng chữ Bảng chữ (luôn thực thi bảng băm hash table lexer) kiểm tra sau token phù hợp, để literals hiệu ghi đè lên mô hình nhận dạng tổng quát h n 2.3.5 Quét file nhị phân Chuỗi ký tự không giới hạn ký tự ASCII Khi phân tích tập Footer Page 17 of 126 16 Header Page 18 of 126 tin nhị phân có chứa chuỗi số nguyên ngắn Đầu tiên, xác định lớp thiết lập từ vựng để có tất bit nhị phân giá trị 2.3.6 Quét ký tự Unicode ANTLR cho phép nhận đầu vào bao gồm ký tự Unicode, có nghĩa không bị giới hạn đến bit ký tự ASCII ANTLR cho phép không hỗ trợ Unicode 2.3.7 Tạo đối tượng Token Các quy tắc từ vựng gọi quy tắc khác giống phân tích cú pháp ANTLR cho phép dán nhãn quy tắc từ vựng có đối tượng token đại diện cho văn bản, loại thẻ, số dòng, vv phù hợp với quy tắc tham chiếu 2.3.8 Điều kiện End of file Một phư ng pháp có sẵn để tác động trở lại với kết thúc tình trạng tập tin thể kiện Phư ng pháp này, CharScanner.uponEOF (), gọi từ nextToken () trước máy quét trả đối tượng EOF_TYPE mã thông báo để phân tích cú pháp 2.4 CÂY PHÂN TÍCH CÚ PHÁP ANTLR 2.4.1 Quy tắc ngữ pháp Ngữ pháp sưu tập quy tắc EBNF nhúng với hành động, vị ngữ nghĩa, vị cú pháp Mỗi phư ng án thay bao gồm danh sách yếu tố, yếu tố mục ngữ pháp ANTLR thường xuyên với việc bổ sung yếu tố mô hình 2.4.2 Cú pháp vị từ ANTLR phân tích cú pháp sử dụng biểu tượng lookahead, hình thức trung gian thiết kế cách rõ ràng dễ dàng Tuy nhiên cần phải phân biệt cấu trúc tư ng tự Vị cú pháp sử dụng để khắc phục hạn chế giới hạn cố định lookahead Footer Page 18 of 126 17 Header Page 19 of 126 2.4.3 Dòng Token Theo truyền thống, lexer phân tích cú pháp chặt chẽ c ng đối tượng Tuy nhiên, công nhận ngôn ngữ dịch hưởng lợi nhiều từ xử lý kết nối lexer phân tích cú pháp dòng token Tư ng tự dòng Java I/O nhiều đường truyền đối tượng dòng để sản xuất dòng liệu bậc cao 2.4.4 Lọc dòng Token ANTLR cung cấp TokenStreamBasicFilter cho tình như, hướng dẫn để loại bỏ loại thẻ loại mà không cần phải sửa đổi lexer Đây cách sử dụng ví dụ TokenStreamBasicFilter lọc dòng thích khoảng trắng 2.4.5 Sự phân tách dòng Token Để gửi comment phân tích cú pháp dòng token thông báo ẩn - trình phân tích cú pháp "lắng nghe” (listening) Trong trình công nhận, hành động sau kiểm tra dòng ẩn, thu thập ý kiến 2.4.6 Cơ chế StringTemple Cách tiếp cận StringTemplate để tạo cấu trúc liệu trung gian (StringTemplate) phân tích cú pháp trừ tượng AST (Abstract Syntax Tree) sau có khả có nhiều đầu cho ngôn ngữ khác nhau, có định dạng đầu rõ ràng tách từ phân tích xây dựng cấu trúc liệu 2.5 ECLIPSE 2.5.1 Giao diện Eclipse Cửa sổ Eclipse gọi bàn làm việc (workbench), có thành phần như: trình đ n, công cụ, trình soạn thảo khung nhìn V ng phía công cụ n i đặt trình soạn thảo khung nhìn gọi trang bàn làm việc (workbench page) Footer Page 19 of 126 18 Header Page 20 of 126 2.5.2 Kiến trúc Eclipse Hình 2.3 : Kiến trúc Eclipse Kiến trúc Eclipse xây dựng dựa hai thành phần: - Thành phần tảng (core) : Có thể hình dung phần bao gồm chức năng, dịch vụ mà hệ phát triển ứng dụng phải có chức cung cấp giao diện, trình soạn thảo văn bản, hướng dẫn sử dụng, gỡ lỗi… cần cho tảng lập trình (cần cho plug-in) - Thành phần gắn thêm (plug-in) : Nền tảng Eclipse xây dựng dựa c chế phát hiện, tích hợp chạy đoạn chư ng trình (chính thành phần gắn thêm) Nhờ c chế mà gọn nhẹ dễ tùy biến Việc “gắn” thêm thành phần thực đ n giản, việc chép tập tin vào thư mục, khởi động lại Eclipse tự động nhận thành phần gắn thêm 2.5.3 Ưu điểm nhược điểm Eclipse a Ưu điểm - Là mã nguồn mở miễn phí có khả mở rộng, phụ thuộc vào thành phần gắn thêm cho ngôn ngữ mới, cho xử lý mới; Footer Page 20 of 126 19 Header Page 21 of 126 - Ứng dụng cho việc phát triển kiểu ứng dụng, từ ứng dụng doanh nghiệp, ứng dụng máy tính cá nhân ứng dụng nhúng cho thiết bị; - Lập trình viên tự làm thêm thành phần gắn thêm theo yêu cầu riêng b Nhược điểm Người dùng cần có hiểu biết rõ Eclipse để biết lúc gắn thêm hay gỡ dự án Ngoài ra, dự án (project) gắn thêm không ngừng phát triển nên phải biết lúc nâng cấp lên đời h n (mặc d Eclipse có khả tự động tìm dự án gắn thêm) Footer Page 21 of 126 20 Header Page 22 of 126 CHƯƠNG THỬ NGHIỆM CÁC CÔNG CỤ CỦA ANTLR ĐỂ XỬ LÝ CÁC THÔNG ĐIỆP ĐA NGỮ 3.1 CÀI ĐẶT ANTLR Bước 1: Tải Java JDK (Java SE Development Kit) Bước 2: Tải ANTLR 3.4 từ trang Web http://www.antlr.org/ Bước 3: Tải Eclipse Galileo cách vào trang Web http://eclipse.org/downloads, chọn Eclipse IDE for Java Developers Bước 4: Cài đặt DLTK, GEF Zest cách thêm vào đường link http://download.eclipse.org/releases/galileo mục Help/Install New Software Bước 5: Tải ANTLR IDE cách thêm trang Web http://antlrv3ide.sourceforge.net/updates/2.0.2 vào 3.2 THỬ NGHIỆM ANTLR Thử nghiệm 1: Thử nghiệm tính tự động tạo trình phân tích từ vựng (lexer) trình phân tích cú pháp (parsers) công cụ ANTLR ví dụ đ n giản tạo gói a.b.c Đoạn mã cụ thể sau: grammar Sample; options { language = Java; } @header { package a.b.c; } @lexer:: header { package a.b.c; } rule: IDENT ; IDENT : 'a' 'z'+; Footer Page 22 of 126 21 Header Page 23 of 126 Khi tạo gói a.b.c ANTLR tự động sinh mã cho file Sample.tokens, SampleLexer.java, SampleParser.java cụ thể hình sau: Tự động sinh trình phân tích từ vựng (Lexer) Hình 3.1: Tự động trình phân tích từ vựng (Lexer) Tự động sinh trình phân tích cú pháp (Parser) Hình 3.12: Tự động trình phân tích cú pháp (Parser) Footer Page 23 of 126 22 Header Page 24 of 126 Thử nghiệm 2: Thử nghiệm tính tự sinh mã ANTLR Cũng ví dụ trên, tiến hành thêm biến x vào đoạn mã tập tin Sample.g grammar Sample; options { language = Java; } @header { package a.b.c; } @lexer:: header { package a.b.c; } rule: IDENT {x}; IDENT : 'a' 'z'+; ANTLR tự động sinh mã tập tin SampleParser.java thể sau Đoạn mã tập tin SampleParser.java chưa thêm biến x: public final RecognitionException { try { void rule() match(input,IDENT,FOLLOW_IDENT_in_rule38); } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // for sure before leaving } return ; } Footer Page 24 of 126 throws 23 Header Page 25 of 126 Đoạn mã tập tin SampleParser.java thêm biến x: public final void rule() throws RecognitionException { try { { match(input,IDENT,FOLLOW_IDENT_in_rule38); x } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // for sure before leaving } return ; } Footer Page 25 of 126 24 Header Page 26 of 126 KẾT LUẬN Trong thời đại hội nhập kinh tế giới nay, trao đổi công ty dù lớn hay nhỏ với phần lớn sử dụng nhiều ngôn ngữ khác Vấn đề trao đổi thông tin dân tộc, nhiều cộng đồng giới với gặp phải khó khăn, trở ngại việc qui định cách viết hiểu thông điệp, số liệu khác Phần mềm đa ngữ (Multilingual Software) phần mềm cho phép người sử dụng chọn lựa ngôn ngữ (ví dụ: tiếng Anh, tiếng Pháp, tiếng Việt ) làm việc với phần mềm Đa dạng hóa ngôn ngữ sản phẩm phần mềm xu hướng nhà sản xuất phần mềm nay, tính toàn cầu hóa phư ng hướng mở rộng thị trường quốc tế Lựa chọn đối tác dịch chuyên nghiệp phư ng pháp mà nhà sản xuất phần mềm sử dụng Ứng dụng ANTLR để xử lý thông điệp ngữ hóa phần mềm cách để tăng hiệu việc toàn cầu hóa địa hóa phần mềm thay phải viết mã nguồn riêng cho ngôn ngữ Qua trình tìm hiểu nghiên cứu ứng dụng ANTLR đa ngữ hóa phần mềm cho thấy kết tư ng đối tốt Công cụ cho thấy ưu điểm, tiện lợi, có khả ứng dụng thực tiễn Việt Nam Như vậy, sau thời gian tiến hành nghiên cứu, tác giả c hoàn thành nội dung mà đề cư ng đề tài đạt Sản phẩm đề tài ứng dụng tốt việc tìm hiểu, nghiên cứu triển khai lập trình ứng dụng đặc biệt dạy học bậc phổ thông đại học Footer Page 26 of 126 ... nhiệm công cụ ANTLR để xử lý thông điệp đa ngữ Đây lĩnh vực chưa nghiên cứu, phổ biến rộng rãi Việt Nam Vì vậy, chọn đề tài Nghiên cứu ứng dụng ANTLR để xử lý thông điệp phần mềm đa ngữ làm đề... xuất phần mềm sử dụng Ứng dụng ANTLR để xử lý thông điệp ngữ hóa phần mềm cách để tăng hiệu việc toàn cầu hóa địa hóa phần mềm thay phải viết mã nguồn riêng cho ngôn ngữ Qua trình tìm hiểu nghiên. .. dịch, nghiên cứu ngôn ngữ ANTLR, nghiên cứu c sở lý thuyết thư viện GetAMsg sau vận dụng ANTLR vào quản lý thông điệp đa ngữ sử dụng GetAMsg Đối tượng phạm vi nghiên cứu Đối tượng nghiên cứu bao

Ngày đăng: 06/05/2017, 11:58

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

Tài liệu liên quan