xây dựng bộ phân tích cú pháp chương trình

103 718 0
xây dựng bộ phân tích cú pháp chương trình

Đ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

MỤC LỤC CHƯƠNG 1. GIỚI THIỆU 8 1.1 Wave 8 1.2 Các ứng dụng của Wave 9 1.3 Nội dung khóa luận 10 CHƯƠNG 2. NGÔN NGỮ WAVE 11 2.1 Giới thiệu về Ngôn ngữ Wave 11 2.2 Node, Link và Không gian phân tán : Knowledge Network (KN) 11 2.3 Tổ chức chung của ngôn ngữ Wave 12 2.4 Cấu trúc dữ liệu cơ bản của Wave 13 2.5 Biến Spatial và kiểu 14 2.5.1 Task variables 14 2.5.2 Environment variables 14 2.6 Các hành động - ACTS 14 2.6.1 Control acts 14 2.6.2 Fusion acts: Các phép toán hợp nhất 16 2.7 Rules – Các luật trong Wave 17 2.8 Wave và mô hình lập trình truyền thống 18 2.8.1 Sơ đồ luồng (SD) 18 2.8.2 Wave và mô hình lập trình song song 19 2.8.3 Wave và mô hình lập trình tuần tự 21 CHƯƠNG 3. XÂY DỰNG BỘ INTERPRETER 27 3.1 Wave không có Rule 27 3.1.1 Chi tiết ví dụ về các bước của Wave 27 3.1.2 Thuật toán tổng quát cho Wave không có Rule 29 3.2 Wave có Rule 30 - 1 - 3.2.1 Ví dụ về Wave có Rule 30 3.2.2 Thuật toán tổng quát cho Wave có Rule 32 3.3 Hệ thống Track 35 3.3.1 Rule dựa trên bộ điều khiển Track 35 3.3.2 Thuật toán cho Bộ xử lý track 40 i. Kết thúc công việc bằng cách rời các Node này và các Link (Node và Link vẫn được giữ nguyên) 41 i. Xóa bỏ tất cả các biến frontal, chuỗi wave liên quan tới track node này. Xóa bỏ track node hiện tại và các link liên kết với nó 41 3.3.3 Sự lan tỏa Track 42 3.4 Tổng quan và kiến trúc của Wave Interpreter 42 3.5 Các thành phần trong Wave Interpreter 43 3.5.1 Wave và Wave Queue 43 3.5.2 Knowledge Network 44 3.5.3 Track Forest 45 3.5.4 Parsing Unit 48 3.5.5 Excution Processor 54 3.5.6 TrackProcessor 55 3.5.7 Communication Processor 64 3.6 Quan hệ giữa các thành phần trong Wave Interpreter 65 3.6.1 Luồng xử lý Wave 69 3.6.2 Luồng xử lý các echo và điều khiển các rule 73 3.6.3 Xây dựng trình biên dịch Wave trên ngôn ngữ Java 77 CHƯƠNG 4. THỰC HIỆN VÀ KẾT QUẢ 79 4.1 Cài đặt 79 4.1.1 Các yêu cầu về phần cứng 79 4.1.2 Các yêu cầu về phần mềm 79 4.2 Thử nghiệm 80 - 2 - 4.2.1 Sử dụng chương trình 80 4.2.2 Tạo lưới thực địa 81 4.3 Di chuyển tự do 82 4.3.1 Di chuyển tránh chướng ngại vật 85 4.3.2 Di chuyển vòng quanh chướng ngại vật 87 4.4 Di chuyển cùng nhau kiểu tịnh tiến 90 4.4.1 Hiển thị hình ảnh 3D động bằng GnuPlot 90 4.4.2 Hiển thị hình ảnh 3D của tệp tin VRML 91 4.4.3 Hiển thị hình ảnh 3D với các góc nhìn khác nhau 92 4.4.4 Hiển thị hình ảnh 3D VRML trên nhiều máy 93 CHƯƠNG 5. PHỤ LỤC 96 5.1 JJTree 96 5.1.1 Giới thiệu 96 5.1.2 Các kiểu cấu trúc cây 96 5.2 Thực thi trên ngôn ngữ simpleLang 97 5.3 Xây dựng bộ parser cho ngôn ngữ Wave 99 CHƯƠNG 6. TÀI LIỆU THAM KHẢO 102 - 3 - Mục lục hình vẽ Hình 1-1: Mô hình Wave 9 Hình 2-2: Knowledge Network 12 Hình 2-3: Thành phần của Spread Diagrams 19 Hình 2-4: Tự động tách trong chuỗi Wave 20 Hình 2-5: Một số trường hợp xử lý song song 20 Hình 2-6: Wave xử lý song song có kèm theo Rule 21 Hình 2-7: Xử lý tuần tự không Rule và có Rule 22 Hình 2-8: Wave xử lý tuần tự có Rule 22 Hình 2-9: một số trường hợp với mệnh đề If – else 23 Hình 2-10: Một số trường hợp với mệnh đề If – else 23 Hình 2-11: else – if với filter 24 Hình 2-12: Else – if parallel 24 Hình 2-13: Else – if với Rule 25 Hình 2-14: Switch 25 Hình 2-15: Câu lệnh lặp sử dụng Repetition 26 Hình 2-16: Câu lệnh lặp sử dụng Recursion 26 Hình 3-17: Wave có Rule 30 Hình 3-18: Tạo track trong quá trình Wave thực thi và lan tỏa 35 Hình 3-19: Trạng thái và biến frontal 36 Hình 3-20: Gửi echo và tổng hợp các kết quả trạng thái, sau đó loại các Track Link, Track Node thừa 37 Hình 3-21: Truyền Tail tới các Track Node ngoài cùng (Node lá) 39 Hình 3-22: Kích hoạt Tail trong các Node lá 40 - 4 - Hình 3-23. Các thành phần của Wave Interpreter 43 Hình 3-24: Wave và Wave Queue 44 Hình 3-25: Knowledge Network 45 Hình 3-26: Track Forest 47 Hình 3-27: Excution Processor 55 Hình 3-28: Sau khi nhận và xử lý CREATE 56 Hình 3-29: Sau khi nhận và xử lý EXPANDH 57 Hình 3-30: Sau khi nhận và xử lý ACTIVATE 59 Hình 3-31: Sau khi nhận ECHO từ các nhánh con 61 Hình 3-32: Sau khi xử lý ECHO nhận được 63 Hình 3-33: Communication Processor 65 Hình 3-34: Quan hệ giữa các thành phần trong Wave Interpreter 66 Hình 3-35: Luồng xử lý giữa các thành phần trong Wave Interpreter 69 Hình 3-36: Lan truyền echo lên trên 74 Hình 3-37: Gửi tail cho các track con 75 Hình 4-38. Chương trình hiển thị khi mới được chạy 80 Hình 4-39. Chương trình WAVE khi bắt đầu chạy 81 Hình 4-40. Lưới 5x5 81 Hình 4-41. Cửa sổ output của Netbeans 82 Hình 4-42. Vị trí đầu tiên 1-1 82 Hình 4-43. Chạy ngẫu nhiên tới vị trí tiếp theo 83 Hình 4-44. Các bước chạy ngẫu nhiên tiếp theo 84 Hình 4-45. Tiếp tục chạy ngẫu nhiên 85 Hình 4-46. Dừng khi chạy tới đích 85 - 5 - Hình 4-47. Di chuyển qua chướng ngại vật 86 Hình 4-48. Vượt qua chướng ngại vật và về đến đích 87 Hình 4-49. Di chuyển vòng quanh chướng ngại vật 88 Hình 4-50. Vòng quanh chướng ngại vật 1 vòng thì dừng 89 Hình 4-51. Di chuyển tịnh tiến cùng nhau 90 Hình 4-52. Hình ảnh 3D trên máy thứ nhất sử dụng GnuPlot 91 Hình 4-53. Hình ảnh 3D trên máy thứ hai sử dụng GnuPlot 91 Hình 4-54. Tệp tin VRML được hiển thị sau khi được tạo bởi KN 92 Hình 4-55. Các đối tượng hiển thị theo cách khác thi thay đổi Transform. 93 Hình 4-56. Một cách nhìn khác thi thay đổi Transform 93 Hình 4-57. Hiển thị đối tượng đầu tiên trên máy 1 94 Hình 4-58. Hiển thị đối tượng thứ hai trên máy 2 95 - 6 - Khái niệm và cụm từ viết tắt CP Communication Processor CQ Communication Queue EU Execution Unit KN Knowledge Network PU Parsing Unit SD Spread Diagrams SNR Set of Nodes reached TF Track Forest TN Track Node TP Track Processor TQ Track Queue WI Wave Interpreter WQ Wave Queue - 7 - CHƯƠNG 1. GIỚI THIỆU Ở chương này chúng tôi trình bày tổng quan về công nghệ Wave nhằm trả lời các câu hỏi sau: Wave là gì? Nó khác và ưu điểm hơn so với các hệ thống bình thường ở chỗ nào? Các ứng dụng viết trên Wave sử dụng trong lĩnh vực gì? 1.1 Wave Ngày nay, các hệ thống mở và mạng máy tính đang phát triển rất nhanh và được cả thế giới quan tâm. Hệ thống mạng máy tính kết nối công việc từ khắp nơi trên thế giới, mạng máy tính cũng giữ một khối lượng khổng lồ dữ liệu dịch vụ và thông tin. Những công cụ tương tác không chỉ để tìm kiếm thông tin, dịch vụ hoặc file ngay trên máy tính mà còn được mở rộng về địa lý, không gian… và hoàn toàn mở trên Internet. Một ví dụ điển hình ở đây chính là World Wide Web. Tuy nhiên, hầu hết các mô hình và công cụ lập trình phân tán thiếu đi khả năng linh hoạt để khai thác thông tin về cấu trúc mở một cách tự động. Những mô hình lập trình và hệ thống phân tán truyền thống thường dựa trên dữ liệu đóng. Công việc được xử lý trong các ứng dụng phân tán thường phải được định nghĩa trước hoặc được gọi thông qua việc kích hoạt thủ tục, phương thức. Phần lớn việc xử lý và tương tác thông qua việc trao đổi thông điệp chứa dữ liệu. Ngoài ra hệ thống phân tán có thể cung cấp dữ liệu và dịch vụ chia sẻ. Trong mạng máy tính, dịch vụ và thông tin chỉ nằm ở các máy chủ ứng dụng (ví dụ như việc sử dụng của các tổ chức kinh doanh…). Tuy nhiên, phương pháp tiếp cận này vẫn chưa tối ưu. Do đó, chúng ta sẽ cần phải tích hợp linh hoạt các máy chủ ứng dụng trong một hệ thống tổng thể và có cơ sở hạ tầng mở hơn nữa. WAVE không chỉ là một mô hình. Wave còn là công nghệ dựa trên sự liên kết và điều khiển của các hệ thông lớn được hỗ trợ bởi mạng máy tính và viễn thông. Wave cho phép linh động tạo các cấu trúc điều khiển và việc xử lý mạng tri thức (phân tán và song song) thông minh. Các cấu trúc này có thể cung cấp khả năng tự tổ chức, phục hồi, tạo khuôn mẫu để kết nôai tới các hệ thống khác. Công nghệ này dựa trên việc cài đặt nhiều tác nhân thông minh trên hệ thống phân tán để tối ưu hóa việc xử lý dữ liệu cục bộ thông qua việc lan tỏa thông tin ở các hệ thống nhỏ với nhau hoặc ở hai hệ thống nhỏ khác nhau. Tất cả công việc trên đều được thông dịch qua ngôn ngữ Wave. Mã đệ quy được viết từ ngôn ngữ này có khả năng tự lan tỏa trong không gian hệ thống. Không giống các hệ thống truyền thống, nó là một hệ thống dựa trên sự linh động của chương trình có thể tùy ý mở rộng về mặt địa lý và hỗ trợ nhiều máy tính trên mạng. Trong Wave, chương trình có thể cho vào trong hệ thống bất kỳ chỗ nào. Khi đó các chương trình này có khả năng lan tỏa qua mạng như virus. Nhiều người sử dụng có thể độc lập phát triển các chương trình Wave hoặc liên kết trong cùng một hệ thống không gian, chia sẻ biến cục bộ (biến này được liên kết với Node) với các biến khác (được kèm theo sự duy chuyển của mã Wave). Nói cách khác: • Wave là một ngôn ngữ, model đặc biệt và là công nghệ mới cho hệ thống song song, phân tán hay kết hợp các hệ thống đó với nhau. - 8 - • Wave ban đầu được thiết kế cho việc mô phỏng mạng ảo như là mạng tri thức (Knowledge Networks). • Wave dựa trên các chương trình mà có thể lan tỏa, mở rộng, chia nhỏ và có thể tự hồi đáp trong những mạng tri thức đã được kích hoạt. Hình 1-1: Mô hình Wave 1.2 Các ứng dụng của Wave Các thuật toán về phân tán đã được lập trình thành công trong WAVE như các bài toán liên quan đến đồ thị và các vấn đề lý thuyết về mạng (tìm đường ngắn nhất, phân tích topology mạng, các loại cây spanning…). Các hoạt động tự phục hồi đồ thị, thủ tục cập nhật thông tin liên lạc như địa điểm, đường đi…trên điện thoại di động. Những ứng dụng hiện nay bao gồm việc quản lý hệ thống mạng máy tính tích hợp với hệ thống quản lý truyền thống với công nghệ Wave. Một vài ứng dụng như: xử lý máy móc, mô hình và kiểm soát trong mạng di động, tích hợp cơ sở dữ liệu phân tán. Wave cũng có thể được gọi là “Điện thoại thông minh” với hàng loạt ứng dụng: • Mô hình giao tiếp mạng di động. • Tích hợp hệ thống cơ sở dữ liệu phân tán. • Mô phỏng mạng lưới giao thông, phân tích và điều khiển. • Điều khiển phân tán mạng lưới hàng không một cách tự động giữa các vùng, miền. • Ứng dụng vào việc đo đạc địa lý một cách tự động. • Quản lý thông minh trong hệ thống viễn thông và mạng máy tính mở. • Điều khiển trong robot. Các ứng dụng trên Wave còn được thể hiện chi tiết và rõ ràng trong khóa luận tốt nghiệp của các bạn: - Vũ Đức Tiệp và Đỗ Thế Chuẩn hai bạn đã đưa ra vấn đề cụ thể: Xây dựng hệ thống mô phỏng và thực tại ảo bằng ngôn ngữ Wave. - Phí Hồng Thái và Phạm Minh Ngọc: Hệ thống phân tích mạng xã hội Yahoo!360 dựa trên nền tảng công nghệ Wave. - 9 - 1.3 Nội dung khóa luận Trong các chương ở khóa luận này, chúng tôi đề cập những vấn đề sau: Chương 1: Giới thiệu và trình bày tổng quan cũng như các ứng dụng của Wave Chương 2: Trình bày về cú pháp, ngữ nghĩa cách tổ chức chung của ngôn ngữ Wave. Ngoài ra chúng tôi còn đưa ra một vấn đề nữa là: Wave và các mô hình lập trình truyền thống (tuần tự hoặc song song). Chương 3: Trình bày về cách xây dựng hệ thống Interpreter cho Wave bằng cách tiếp cận từ lý thuyết tới việc tìm hiểu kiến trúc chung của hệ thống, các thành phần và quan hệ giữa các thành phần đó. Chương 4: Đưa ra các bài toán thực tế và kết quả đạt được. Chương 5: Phụ lục về JJTree Chương 6: Tài liệu tham khảo. - 10 - [...]...CHƯƠNG 2 NGÔN NGỮ WAVE Trong phần này chúng tôi trình bày về cú pháp và ngữ nghĩa của ngôn ngữ Wave Đây là một ngôn ngữ đặc biệt cho phép tạo và xử lý thông tin trong không gian mạng theo hướng Chương trình viết bằng ngôn ngữ này có thể được coi như những thành phần linh hoạt, có khả năng di động và kết hợp với các thành phần riêng lẻ, phân tán khác Trong quá trình “di chuyển”, chương trình có... trên hệ thống phân tán Quá trình thực thi của ngôn ngữ Wave giống như virus, tức là có khả năng nhân bản và lan tỏa qua mạng, thực thi phân tán mà không cần bất kỳ sự điều khiển tập trung nào Kiến trúc Wave mô tả quá trình xử lý phân tán qua việc tự định hướng luồng chương trình qua không gian dữ liệu phân tán có cấu trúc như một đồ thị hay được gọi là Knowledge Network Các node trên mạng phân tán thuộc... Recursion - 26 - CHƯƠNG 3 XÂY DỰNG BỘ INTERPRETER Trong chương này chúng ta bàn tới thuật toán và kỹ thuật trong việc xử lý tuần tự hoặc song song của Wave trong hệ thống mạng máy tính Sau đó chúng ta sẽ trình bày tiếp về cấu trúc chính trong bộ biên dịch và các hàm đơn vị điều khiển trên cấu trúc đó, cũng như việc thực hiện chúng ở từng giai đoạn khác nhau Tất cả các thông tin được trình bày trong chương này... theo dữ liệu đồng thời cập nhật vào dữ liệu lưu tại mạng KN Các chương trình mặc dù được xử lý song song nhưng vẫn có những cơ chế cho phép chúng phối hợp đồng bộ với nhau thông qua hệ thống các luật Ở phần cuối chương này chúng tôi còn đề cập tới một vấn đề nữa: Wave và các phương pháp lập trình truyền thống (lập trình tuần tự và lập trình song song) 2.1 Giới thiệu về Ngôn ngữ Wave Wave là một ngôn... một cách cục bộ, trong quá trình di chuyển qua link hay khi đứng trực tiếp tại một node cụ thể nào đó Từ một node, cả nội dung và hướng của link có thể truy xuất trực tiếp Ví dụ: Hình 2-2: Knowledge Network 2.3 Tổ chức chung của ngôn ngữ Wave Ngôn ngữ Wave đặc trưng cho quá trình lan tỏa song song trong không gian dữ liệu phân tán được biết là KN Do vậy cú pháp của ngôn ngữ miêu tả rõ quá trình hoạt... thực thi xong w1, gặp RL chương trình Wave sẽ tách w2 cùng với biến môi trường thành Wave mới cho vào hàng đợi xử lý, chuỗi Wave tiếp tục thực thi là w3 cùng với biến môi trường của nó 2.8 Wave và mô hình lập trình truyền thống 2.8.1 Sơ đồ luồng (SD) Wave là ngôn ngữ có khả năng xử lý cấu trúc dữ liệu không gian phân tán lớn Một thuộc tính quan trọng của Wave là các chương trình điều khiển luôn được... OR_PARALLEL((m2, m4), (m3 m4)) m5  m1 OR_PARALLEL((m2 m4, m4, m4), ( m3 m4, m4, m4) ) m5 2.8.3 Wave và mô hình lập trình tuần tự Việc cho phép phát triển không gian, xử lý song song và tự động trong môi trường phân tán, Wave có thể dễ dàng mô hình hóa một số chương trình xử lý tuần tự Giống các chương trình bình thương, truyền thống ở cùng một máy tính, Wave phải ở cùng một điểm trong không gian và chỉ có duy... định trạng thái kết quả trả về để điều khiển luồng chương trình, - 15 - có một cách khác để thực hiện đó là dùng State Generator gồm 4 trạng thái: TRUE, DONE, FALSE, ABORT Cú pháp gồm tên trạng thái, theo sau là dấu ! Ví dụ: w1.TRUE!.w2 Trong Ví dụ này w2 sẽ tiếp tục thực hiện w1.DONE.w2 hoặc w1.!.w2 sẽ dừng sau khi thực hiện xong w1 Code Injection Cú pháp ^Func, trong đó Func là một chuỗi Wave Phép... cho Wave không có Rule Như trong ví dự ở trên, công việc của trình biên dịch Wave trong mỗi máy có thể được miêu tả bằng thuật toán tổng quát Vòng lặp: 1 Lấy Wave từ Wave Queue và tách biến môi trường ra 2 Bỏ tất các dấu ngoặc đơn ở toàn bộ chuỗi Wave 3 Phân tích chuỗi Wave thành 2 thành phần: Head và Tail 4 Bỏ tất cả dấu ngoặc đơn ở toàn bộ phần Head 5 Nếu Head là Simple move a Dừng Tail tạm thời b... phát triển độc lập, dị bộ và được xử lý song song trong không gian phân tán Tuy nhiên điểm mạnh của Wave là nó có hệ thống các RULE để quản lý và đồng bộ các các hành động RULE thiết lập các ràng buộc trong việc lan tỏa chuỗi Wave Thông qua RULE, hệ thống có thể thực thi nhiều lần một Wave, hay tiếp tục lan tỏa Wave nếu thỏa mãn một điều kiện nào đó, hoặc có thể chấm dứt toàn bộ wave RULE thường “treo” . Wave và mô hình lập trình truyền thống 18 2.8.1 Sơ đồ luồng (SD) 18 2.8.2 Wave và mô hình lập trình song song 19 2.8.3 Wave và mô hình lập trình tuần tự 21 CHƯƠNG 3. XÂY DỰNG BỘ INTERPRETER 27 3.1. luận Trong các chương ở khóa luận này, chúng tôi đề cập những vấn đề sau: Chương 1: Giới thiệu và trình bày tổng quan cũng như các ứng dụng của Wave Chương 2: Trình bày về cú pháp, ngữ nghĩa. đó. Chương 4: Đưa ra các bài toán thực tế và kết quả đạt được. Chương 5: Phụ lục về JJTree Chương 6: Tài liệu tham khảo. - 10 - CHƯƠNG 2. NGÔN NGỮ WAVE Trong phần này chúng tôi trình bày về cú pháp

Ngày đăng: 02/07/2014, 21:55

Từ khóa liên quan

Mục lục

  • CHƯƠNG 1. GIỚI THIỆU

    • 1.1 Wave

    • 1.2 Các ứng dụng của Wave

    • 1.3 Nội dung khóa luận

    • CHƯƠNG 2. NGÔN NGỮ WAVE

      • 2.1 Giới thiệu về Ngôn ngữ Wave

      • 2.2 Node, Link và Không gian phân tán : Knowledge Network (KN)

      • 2.3 Tổ chức chung của ngôn ngữ Wave

      • 2.4 Cấu trúc dữ liệu cơ bản của Wave

      • 2.5 Biến Spatial và kiểu

        • 2.5.1 Task variables

        • 2.5.2 Environment variables

        • 2.6 Các hành động - ACTS

          • 2.6.1 Control acts

          • 2.6.2 Fusion acts: Các phép toán hợp nhất

          • 2.7 Rules – Các luật trong Wave

          • 2.8 Wave và mô hình lập trình truyền thống

            • 2.8.1 Sơ đồ luồng (SD)

            • 2.8.2 Wave và mô hình lập trình song song

            • 2.8.3 Wave và mô hình lập trình tuần tự

            • CHƯƠNG 3. XÂY DỰNG BỘ INTERPRETER

              • 3.1 Wave không có Rule

                • 3.1.1 Chi tiết ví dụ về các bước của Wave

                • 3.1.2 Thuật toán tổng quát cho Wave không có Rule

                • 3.2 Wave có Rule

                  • 3.2.1 Ví dụ về Wave có Rule

                  • 3.2.2 Thuật toán tổng quát cho Wave có Rule

                  • 3.3 Hệ thống Track

                    • 3.3.1 Rule dựa trên bộ điều khiển Track

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

Tài liệu liên quan