Luận văn Xây dựng trình biên dịch cho ngôn ngữ Wave
TRƯỜNG ………………….
KHOA……………………….
-----[\ [\----
Báo cáo tốt nghiệp
Đề tài:
XÂY DỰNG TRÌNH BIÊN DỊCH CHONGÔN NGỮ WAVE
MỤC LỤC
- 1 -
Mục lục hình vẽ ................................................................................................... 5
Khái niệm và cụm từ viết tắt.............................................................................. 8
CHƯƠNG 1. GIỚI THIỆU .............................................................................. 9
1. 1 Wave............................................................................................................................9
1. 2 Các ứng dụng của Wave..........................................................................................10
1. 3 Nội dung khóa luận..................................................................................................11
CHƯƠNG 2. NGÔN NGỮ WAVE................................................................ 12
2. 1 Giới thiệu về Ngôn ngữ Wave.................................................................................12
2. 2 Node, Link và Không gian phân tán : Knowledge Network (KN) ......................12
2. 3 Tổ chức chung của ngôn ngữ Wave .......................................................................13
2. 4 Cấu trúc dữ liệu cơ bản của Wave .........................................................................14
2. 5 Biến Spatial và kiểu .................................................................................................14
2. 5. 1
2. 5. 2
Task variables................................................................................................................15
Environment variables ..................................................................................................15
2. 6 Các hành động - ACTS............................................................................................15
2. 6. 1
2. 6. 2
Control acts....................................................................................................................15
Fusion acts: Các phép toán hợp nhất...........................................................................17
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 ..............................................................19
2. 8. 1
2. 8. 2
2. 8. 3
Sơ đồ luồng (SD) ...........................................................................................................19
Wave và mô hình lập trình song song ..........................................................................20
Wave và mô hình lập trình tuần tự...............................................................................22
CHƯƠNG 3. XÂY DỰNG BỘ INTERPRETER......................................... 28
3. 1 Wave không có Rule ................................................................................................28
3. 1. 1
3. 1. 2
Chi tiết ví dụ về các bước của Wave .............................................................................28
Thuật toán tổng quát cho Wave không có Rule...........................................................30
- 2 -
3. 2 Wave có Rule............................................................................................................31
3. 2. 1
3. 2. 2
Ví dụ về Wave có Rule...................................................................................................31
Thuật toán tổng quát cho Wave có Rule .....................................................................33
3. 3 Hệ thống Track ........................................................................................................36
3. 3. 1
3. 3. 2
3. 3. 3
Rule dựa trên bộ điều khiển Track...............................................................................36
Thuật toán cho Bộ xử lý track ......................................................................................39
Sự lan tỏa Track............................................................................................................40
3. 4 Tổng quan và kiến trúc của Wave Interpreter .....................................................41
3. 5 Các thành phần trong Wave Interpreter...............................................................42
3. 5. 1
3. 5. 2
3. 5. 3
3. 5. 4
3. 5. 5
3. 5. 6
3. 5. 7
Wave và Wave Queue....................................................................................................42
Knowledge Network.......................................................................................................42
Track Forest ..................................................................................................................43
Parsing Unit...................................................................................................................44
Excution Processor........................................................................................................51
TrackProcessor..............................................................................................................52
Communication Processor............................................................................................56
3. 6 Quan hệ giữa các thành phần trong Wave Interpreter........................................57
3. 6. 1
3. 6. 2
3. 6. 3
Luồng xử lý Wave..........................................................................................................60
Luồng xử lý các echo và điều khiển các rule...............................................................64
Xây dựng trình biên dịch Wave trên ngôn ngữ Java...................................................67
CHƯƠNG 4. THỰC HIỆN VÀ KẾT QUẢ .................................................. 69
4. 1 Cài đặt.......................................................................................................................69
4. 1. 1
4. 1. 2
Các yêu cầu về phần cứng ............................................................................................69
Các yêu cầu về phần mềm.............................................................................................69
4. 2 Thử nghiệm...............................................................................................................70
4. 2. 1
4. 2. 2
Sử dụng chương trình...................................................................................................70
Tạo lưới thực địa...........................................................................................................71
- 3 -
4. 3 Di chuyển tự do ........................................................................................................72
4. 3. 1
4. 3. 2
Di chuyển tránh chướng ngại vật.................................................................................75
Di chuyển vòng quanh chướng ngại vật ......................................................................77
4. 4 Di chuyển cùng nhau kiểu tịnh tiến........................................................................80
4. 4. 1
4. 4. 2
4. 4. 3
4. 4. 4
Hiển thị hình ảnh 3D động bằng GnuPlot...................................................................80
Hiển thị hình ảnh 3D của tệp tin VRML......................................................................81
Hiển thị hình ảnh 3D với các góc nhìn khác nhau .....................................................82
Hiển thị hình ảnh 3D VRML trên nhiều máy..............................................................83
CHƯƠNG 5. PHỤ LỤC.................................................................................. 86
5. 1 JJTree .......................................................................................................................86
5. 1. 1
5. 1. 2
Giới thiệu .......................................................................................................................86
Các kiểu cấu trúc cây ....................................................................................................86
5. 2 Thực thi trên ngôn ngữ simpleLang.......................................................................87
5. 3 Xây dựng bộ parser cho ngôn ngữ Wave...............................................................89
CHƯƠNG 6. TÀI LIỆU THAM KHẢO....................................................... 92
- 4 -
Mục lục hình vẽ
Hình 1-1: Mô hình Wave .......................................................................................................................10
Hình 2-1: Knowledge Network..............................................................................................................13
Hình 2-2: Thành phần của Spread Diagrams .........................................................................................20
Hình 2-3: Tự động tách trong chuỗi Wave.............................................................................................21
Hình 2-4: Một số trường hợp xử lý song song.......................................................................................21
Hình 2-5: Wave xử lý song song có kèm theo Rule...............................................................................22
Hình 2-6: Xử lý tuần tự không Rule và có Rule.....................................................................................23
Hình 2-7: Wave xử lý tuần tự có Rule ...................................................................................................23
Hình 2-8: một số trường hợp với mệnh đề If – else ...............................................................................24
Hình 2-9: Một số trường hợp với mệnh đề If – else...............................................................................24
Hình 2-10: else – if với filter..................................................................................................................25
Hình 2-11: Else – if parallel...................................................................................................................25
Hình 2-12: Else – if với Rule .................................................................................................................26
Hình 2-13: Switch ..................................................................................................................................26
Hình 2-14: Câu lệnh lặp sử dụng Repetition..........................................................................................27
Hình 2-15: Câu lệnh lặp sử dụng Recursion ..........................................................................................27
Hình 3-1: Wave có Rule.........................................................................................................................31
Hình 3-2: Tạo track trong quá trình Wave thực thi và lan tỏa .................................................................1
Hình 3-3: Trạng thái và biến frontal.........................................................................................................1
Hình 3-4: 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 ..1
Hình 3-5: Truyền Tail tới các Track Node ngoài cùng (Node lá)............................................................1
Hình 3-6: Kích hoạt Tail trong các Node lá.............................................................................................1
Hình 3-7. Các thành phần của Wave Interpreter....................................................................................41
Hình 3-8: Wave và Wave Queue..............................................................................................................1
Hình 3-9: Knowledge Network................................................................................................................1
Hình 3-10: Track Forest...........................................................................................................................1
- 5 -
Hình 3-11: Excution Processor ..............................................................................................................52
Hình 3-12: Sau khi nhận và xử lý CREATE............................................................................................1
Hình 3-13: Sau khi nhận và xử lý EXPANDH ........................................................................................1
Hình 3-14: Sau khi nhận và xử lý ACTIVATE........................................................................................1
Hình 3-15: Sau khi nhận ECHO từ các nhánh con...................................................................................1
Hình 3-16: Sau khi xử lý ECHO nhận được ............................................................................................1
Hình 3-17: Communication Processor .....................................................................................................1
Hình 3-18: Quan hệ giữa các thành phần trong Wave Interpreter ...........................................................1
Hình 3-19: Luồng xử lý giữa các thành phần trong Wave Interpreter ...................................................60
Hình 3-20: Lan truyền echo lên trên ........................................................................................................1
Hình 3-21: Gửi tail cho các track con ......................................................................................................1
Hình 4-1. Chương trình hiển thị khi mới được chạy..............................................................................70
Hình 4-2. Chương trình WAVE khi bắt đầu chạy.................................................................................71
Hình 4-3. Lưới 5x5................................................................................................................................71
Hình 4-4. Cửa sổ output của Netbeans...................................................................................................72
Hình 4-5. Vị trí đầu tiên 1-1...................................................................................................................72
Hình 4-6. Chạy ngẫu nhiên tới vị trí tiếp theo........................................................................................73
Hình 4-7. Các bước chạy ngẫu nhiên tiếp theo ........................................................................................1
Hình 4-9. Dừng khi chạy tới đích...........................................................................................................75
Hình 4-8. Tiếp tục chạy ngẫu nhiên.........................................................................................................1
Hình 4-10. Di chuyển qua chướng ngại vật .............................................................................................1
Hình 4-11. Vượt qua chướng ngại vật và về đến đích..............................................................................1
Hình 4-12. Di chuyển vòng quanh chướng ngại vật ................................................................................1
Hình 4-13. Vòng quanh chướng ngại vật 1 vòng thì dừng.......................................................................1
Hình 4-14. Di chuyển tịnh tiến cùng nhau ...............................................................................................1
Hình 4-15. Hình ảnh 3D trên máy thứ nhất sử dụng GnuPlot..............................................................81
Hình 4-16. Hình ảnh 3D trên máy thứ hai sử dụng GnuPlot..................................................................81
Hình 4-17. Tệp tin VRML được hiển thị sau khi được tạo bởi KN .......................................................82
- 6 -
Hình 4-18. Các đối tượng hiển thị theo cách khác thi thay đổi Transform............................................83
Hình 4-19. Một cách nhìn khác thi thay đổi Transform.........................................................................83
Hình 4-20. Hiển thị đối tượng đầu tiên trên máy 1 ................................................................................84
Hình 4-21. Hiển thị đối tượng thứ hai trên máy 2..................................................................................85
- 7 -
Khái niệm và cụm từ viết tắt
CP
CQ
EU
KN
PU
SD
Communication Processor
Communication Queue
Execution Unit
Knowledge Network
Parsing Unit
Spread Diagrams
Set of Nodes reached
Track Forest
SNR
TF
TN
TP
Track Node
Track Processor
Track Queue
TQ
WI
WQ
Wave Interpreter
Wave Queue
- 8 -
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.
- 9 -
• 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.
- 10 -
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.
- 11 -
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ó thể mang 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 ngữ đặc biệt cung cấp khả năng thực thi mềm dẻo, đa người
dùng 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 về một Wave Interpreter
nào đấy. WI là thành phần có trách nhiệm thực thi trên từng bộ phận riêng lẻ của
mạng, thao tác lên dữ liệu được lưu trữ trong các node.Trong khi di chuyển, những
thành phần của mã Wave có thể tự nhân bản, phân chia hay được chỉnh sửa trong khi
vẫn duy trì sự trao đổi dữ liệu qua lại lẫn nhau.
2. 2 Node, Link và Không gian phân tán : Knowledge Network
(KN)
Định nghĩa:
• Node: Có thể coi là một đối tượng – hay một điểm trong không gian, chứa
các biến (biến là thuộc tính của node)
• Link: Có thể coi là một quan hệ giữa các nút - hay một đoạn, đường thẳng
trong không gian. Nó cũng có các thuộc tính
Wave tạo và xử lý KN – là tập hợp các node và các link có hướng hoặc vô
hướng. Cả node và link đều có nội dung riêng của mình (kiểu giá trị là string). KN có
thể được phân tán trong không gian mạng, tồn tại trên nhiều máy tính khác nhau. Mỗi
máy tính có thể không chứa hoặc chứa nhiều node của KN và các link có thể kết nối
tới các node trong cùng máy tính hoặc với các máy tính khác.
Tất cả các node đều có địa chỉ duy nhất trong không gian phân tán bao gồm 2
thành phần: thành phần thứ nhất để phân biệt các node trong cùng một máy, và thứ hai
là để phân biệt các node giữa các máy khác nhau trong không gian mạng. Node có thể
- 12 -
được truy cập qua các node khác một cách trực tiếp bằng Content hay bằng Address
của chúng hoặc qua quá trình mở rộng qua các link của KN, việc đặt tên cho link và
node nhằm phục vụ điều này. Có hai kiểu nhảy qua lại giữa các node đó là direct hop
và surface hop để thực hiện việc nhảy tới 1 node hay có thể nhảy đến tất cả các node
khác – được dùng cho việc gửi quảng bá.
Không giống với node, link của KN không thể truy xuất trực tiếp qua tên. Dữ
liệu lưu trữ trong link chỉ có thể nhận được hoặc thay đổi 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-1: 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
động này:
wave Æ {{move , } . }
move Æ { data_unit act
} | [rule] (Wave) }
rule Æ SQ | OS | AS | AP | RP | WT | ID | CR
unit Æ { stirng; } | N{l_d} | F{l_d} | C | A | P | S | L | T |
act Æ # | ~ | /~ | == | / = | < | <= | + | - | * | / | ** | | | % | & | : | :: | = | ? | !
trong đó các phần nằm trong [] là tùy chọn
- 13 -
Một chương trình Wave hay gọi đơn giản là Wave bao gồm sự kết hợp các tác
động lên KN gọi là các move – thành phần có thể thực hiện xử lý dữ liệu cục bộ tại
các Node của KN và mở rộng tới các Node khác. Quá trình thực thi song song hay
thực thi không theo thứ tự được tách biệt bởi dấu phẩy (,) phát triển một cách độc lập
từ cùng một Node trong KN. Tập các moves độc lập gọi là zone, được tách biệt nhau
bởi dấu chấm câu (.), các thành phần này sẽ được thực thi một cách tuần tự.
Ví dụ:
Ft={Fa=1;2;3}. Fa+1. ^Ft.T=Fa
Các Rule trong Wave cung cấp cho Wave khả năng mở rộng trong không gian
mạng, kết hợp cùng với các Wave khác. Một ví dụ, các luật có thể tự động tách Wave
ra thành nhiều nhánh riêng biệt rồi sau đó phát triển chúng song song hoặc tuần tự
trong KN, chúng có thể tạo ra hoặc mở rộng KN trong khi di chuyển. Các Rule sẽ
được làm rõ hơn trong phần sau.
Một cách tổng quát, việc thực thi phần đầu của Wave (Wave’s Head) tại một vài
Node có thể là nguyên nhân dẫn tới quá trình lan tỏa của Tail của chuỗi Wave (Wave’s
Tail) tới 0 hay nhiều các Node khác– chúng ta sẽ gọi chúng là tập các Node tới được
(SNR).
Ví dụ:
• w1.w2.w3.w4 : cấu trúc của một chương trình Wave - sự nối tiếp của các
zones
• w1,w2,w3: zone đơn lẻ với tập các move độc lập, tất cả đều được thực thi
tại cùng một Node bắt đầu
• w1,w2.w3,w4: sự kết hợp của 2 kiểu trên.
2. 4 Cấu trúc dữ liệu cơ bản của Wave
Wave là ngôn ngữ được dùng cho quá trình xử lý trên mạng, nhưng không giống
các ngôn ngữ khác, kiểu dữ liệu cơ sở không phản ánh việc đó. Wave sử dụng kiểu dữ
liệu cơ sở là Vector: là tập các string được phân tách nhau bới dấu chấm phẩy (;). Tất
cả các hoạt động của ngôn ngữ đều thực thi trên Vector. Truy cập tới thành phần của
Vector có thể thông qua chỉ số hay chính nội dung của các thành phần trong Vector –
indexing và contenting. Dữ liệu lưu trữ trong Vector là động, tức có thể thay đổi khi có
sự thêm bớt dữ liệu một cách tự động.
Ví dụ:
• Vector chứa 1 phần tử: 3
• Chứa 6 phần tử: 1;2;3;4;5;6
• Chứa nhiều kiểu dữ liệu khác nhau: 34;NONE;25;;a;;;b
2. 5 Biến Spatial và kiểu
Wave thao tác trên kiểu biến được gọi là spatial variable, chúng nằm phân tán và
thường liên quan tới dữ liệu cục bộ tại các Node của KN hay có thể thuộc về một
- 14 -
chuỗi Wave nào đó. Biến kiểu này được chia làm 2 loại: task variable và
environment variable
2. 5. 1
Task variables
Task variable bao gồm: node variable và frontal variable. Các biến kiểu nodal
được lưu cục bộ tại node của KN, các biến kiểu frontal có thể đi cùng Wave qua các
node khác nhau trong mạng. Cả 2 loại biến này đều là tạm thời.
9 Biến Nodal: các biến loại này được khai báo bắt đầu bằng ký tự N
9 Biến Frontal: các biến loại này được khai báo bắt đầu bằng ký tự F
2. 5. 2
Environment variables
Biến môi trường có những định danh và ý nghĩa khác nhau:
9 CONTENT (C): chứa content của Node hiện thời. Giá trị của C luôn là
string, việc thay đổi nội dung của C có thể được gán trực tiếp bằng giá trị
nào đó hoặc NONE – xóa Node cùng với các Link liên kết với nó.
9 ADDRESS (A): địa chỉ của Node hiện thời. Luôn trả lại địa chỉ đầy đủ của
Node nơi Wave đang đứng gồm định danh của Node trong máy và định
danh của Node trong mạng. Đây là biến chỉ đọc.
9 PREDECESSOR (P): biến lưu địa chỉ của Node trước đó Wave đã đi qua.
Nó chỉ thay đổi khi có sự di chuyển của Wave sang Node khác.
9 LINK (L): chứa content của Link vừa mới đi qua.
9 TERMINAL (T): một loại biến đặc biệt dùng để in ra giá trị tương ứng tại
một đầu cuối nào đó.
Ví dụ:
‐ Biến Nodal: N, Nhieu, Ntue..
‐ Biến Frontal: Fpath, Ftemp…
‐ Biến môi trường: TERMINAL, LINK, L…
2. 6 Các hành động - ACTS
2. 6. 1
Control acts
Các Act thực hiện các phép toán cơ bản bên trong move, dùng để thay đổi giá trị
các biến, thay đổi trạng thái hoạt động của wave. Giá trị trả về gồm 3 loại chính sau:
‐ TRUE (2): thành công và cho phép Wave tiếp sau đó thực thi tại Node hiện thời.
‐ DONE (1): thành công nhưng không cho phép Wave thực thi tiếp tại Node hiện
thời.
‐ FALSE (0): thất bại, loại bỏ Wave tại Node hiện thời.
Control acts được phân loại như hop, filters, assignment, state genertator và code
injection.
Hop. Được thực thi bằng toán hạng #. Ta sẽ hiểu rõ hơn cách thực thi của Hop
qua các Ví dụ sau:
- 15 -
• DIRECT # ANY, cách viết khác @#: nhảy tới tất cả các node khác trong
KN trên cùng máy tính từ một node nào đó
• -p#b: nhảy từ node hiện thời theo cung đi ra (-)p tới node b
• ANY#ANY hay #: nhảy qua tất cả các link tới tất cả hàng xóm của một
node
• Và một số kiểu nhảy khác: x#ANY, ANY#x
• Để nhảy sang 1 node ở máy khác ta có cấu trúc: a#b$$`IP, trong đó IP là địa
chỉ IP của máy đích
Filter. Các filter gồm các phép toán sau đây: ~ (thuộc về), /~ (không thuộc về),
== (so sánh bằng), /= (so sánh không bằng), < (so sánh nhỏ hơn), <= (so sánh nhỏ hơn
hoặc bằng), > (so sánh lớn hơn), >= (so sánh lớn hơn hoặc bằng). Giá trị trả về sẽ là
TRUE hoặc FALSE. Nếu giá trị trả về là TRUE, node hiện thời sẽ trở thành một SNR
và Wave tail sẽ tiếp tục phát triển từ node này.
‐ Filter ~:
o Cú pháp: vector1 ~ vector2
o Chức năng: kiểm tra các phần tử của vector 1 có nằm trong vector 2 hay
không
‐ Ví dụ: a;b ~ p;q;b;a sẽ trả về TRUE
‐ Filter /~: ngược lại toán tử ~
‐ Filter ==:
o Cú pháp: v1 == v2
o Chức năng: kiểm tra 2 vector có bằng nhau hay không
o Ví dụ: 2;3 == 2;3 sẽ trả lại TRUE
‐ Filter /=: ngược lại với ==
‐ Các filter còn lại: >,>=,<,<= có ý nghĩa toán học thông thường nhưng được thực
hiện trên vector
Nếu 1 filter trả lại giá trị TRUE, node hiện tại sẽ trở thành SNR, ngược lại SNR
sẽ rỗng và chuỗi Wave sẽ dừng quá trình thực thi.
Assignment.
Toán tử gán = sẽ gán giá trị của toán hạng bên phải vào toán hạng bên trái. Dữ
liệu bên phải có thể là giá trị số, string, biến, vector. Phép gán luôn trả lại kết quả là
TRUE.
Ví dụ: Na=1, Na=1;2;3, Na=Nb;2;3;Fc
State Generator.
Các trạng thái trả về ở trên đều xảy ra sau một quá trình thực thi nào đó. Đôi khi
ta muốn trực tiếp xác định trạng thái kết quả trả về để điều khiển luồng chương trình,
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
- 16 -
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 chèn mã này sẽ bổ sung
thêm vào chuỗi Wave một chuỗi nằm trong biến sau ^. Phép này hay được sử dụng
khi gọi chương trình con
Ví dụ:
Ft={Fa=1;2;3}. Fa+1. ^Ft.T=Fa
2. 6. 2
Fusion acts: Các phép toán hợp nhất
Các phép toán số học. Bao gồm các phép toán +, -, *, /. Nếu thực hiện chia cho
0, kết quả trả về là FALSE
Ví dụ:
‐ `124.36’ + 100 có kết quả: `224.36’
‐ 66;4;24 – 1;1;1;1;1;1;1 có kết quả: 65;3;23;-1;-1;-1;-1
‐ 1;2;3;4;5 * 1;1;1 có kết quả: 1;2;3;0;0
‐ 2;3;4 / 1;2 có kết quả: FALSE
‐ NONE * sẽ trả lại rỗng
Các phép toán trên Vector đặc biệt. Gồm 1 số phép toán sau:
‐ &: append, nối 1 Vector vào sau 1 Vector khác
o Ví dụ: v1 & v2 – v1, v2 là 2 Vector
‐ Toán tử hai chấm (:) : lấy giá trị tại 1 vị trí của Vector
o Ví dụ: Fa=3;2;3. Fa:1 sẽ trả lại 3
‐ Toán tử (::):
o Ví dụ: Fa=3;2;3. Fa::3 = 10. Kết quả Fa = 10;2;10
‐ |: splits, chia string ở toán hạng bên trái thành 1 Vector các string con bởi dấu
phân cách ở toán hạng bên phải
o Ví dụ: `a+b+c’ | `+’ sẽ trả lại a;b;c
‐ %: join, ngược lại với | tức nó sẽ hợp các Vector con lại thành 1 string với phân
cách là toán hạng bên phải
o Ví dụ: a;b;c % `+’ sẽ trả lại a+b+c
Gọi hàm bên ngoài (External calls). Thực hiện qua toán tử ?, gọi một hàm nào
đó của hệ thống với đầu vào là các tham số từ Wave truyền vào
Ví dụ: 50?`sleep’ sẽ dừng chương trình 50 giây
2. 7 Rules – Các luật trong Wave
Wave có thể 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.
- 17 -
RULE thường “treo” phần còn lại của chuỗi Wave (remainder) và lan tỏa nó ra chỉ khi
chuỗi Wave nằm trong luật thực thi xong và trả lại trạng thái TRUE.
Các Luật Rẽ Nhánh
• SEQUENCE(SQ): kích hoạt tất cả các nhánh một cách tuần tự mà không
cần quan tâm tới trạng thái kết quả trả về. SNR trên SQ là tập các SNR từ
các nhánh con.
Ví dụ: SQ(Fa=1, Fa+1).T=Fa sẽ tạo ra 2 nhánh Fa=1 và Fa+1, thực hiện
tuần tự 2 nhánh này. Kết quả cuối là 2
• OS_SEQUENCE: kích hoạt tất cả các nhánh tuần tự cho tới khi nó nhận
được kết quả TRUE hoặc DONE trả về từ một nhánh nào đó
Ví dụ: OS(Fa=5.Fa>1, T=Fa) tạo ra 2 nhánh Fa=5.Fa>1 và T=Fa và thực
hiện tuần tự. Nhưng do nhánh thứ nhất trả về TRUE nên không thực hiện tiếp
nhánh thứ 2
• AND_SEQUENCE(AS): tương tự SQ nếu tất cả các nhánh đều trả về TRUE
hoặc DONE, nếu 1 nhánh FALSE, trạng thái toàn bộ AS sẽ là FALSE
Ví dụ: AS(TRUE!, FALSE!) sẽ trả lại FALSE
• OR_PARALLEL(OP): kích hoạt các nhánh và thực thi chúng song song,
nếu 1 nhánh trả về TRUE hoặc DONE, OP sẽ nhận TRUE. Nếu không
nhánh nào trả về TRUE hoặc DONE, OP sẽ FALSE
Ví dụ: OP(FALSE!, FALSE!, TRUE!) sẽ trả lại TRUE
• AND_PARALLEL(AP): như AS nhưng các nhánh thực thi song song
Ví dụ: AP(TRUE!, TRUE!, FALSE!) sẽ trả lại FALSE
• RANDOM(RN): chọn một nhánh ngẫu nhiên để phát triển tiếp
Repetition
Luật REPEAT với khả năng vòng lặp cho phép chia Wave thành các phần nhỏ
hơn khi di chuyển trong KN.
Nếu kết quả trạng thái trả về là TRUE hoặc FALSE (SNR không rỗng) thì mỗi thành
phần này sẽ được ghép thêm Tail của Wave. Lúc này, ở tất cả SNR Node đều chứa
biến Frontal (biến này được mang tới từ các Node).
Nếu kết quả trạng thái trả về là DONE (SNR không rỗng) thì Tail của Wave sẽ bị loại
bỏ.
Ví dụ: F = 1; 9; 5; 6; 7; 8; 12.
REPEAT ( Fi +1. F : Fi /= NONE. N + ( F: Fi)).
TERMINAL =N.
Create
- 18 -
Luật CREATE(CR) cho phép Wave có khả năng mở rộng chính mạng KN trong
khi lan tỏa trong không gian. Chuỗi Wave chứa luật này vẫn phát triển như thông
thường, chỉ có các bước nhảy là bị ảnh hưởng - có thể thay đổi chế độ của chúng từ
chế độ lan tỏa (navigation) sang chế độ tạo mới (creation). Khi đó các node và link nếu
chưa có sẽ được tạo ra.
Có rất nhiều chi tiết quan trọng trong ngữ nghĩa của luật CR. Nếu node của 1 bước
nhảy tương ứng bằng địa chỉ của nó – điều này có nghĩa node đó đã tồn tại, tức các
thành phần trong luật CR nếu chưa có sẽ được tạo ra, còn nếu đã tồn tại thì quá trình
CR sẽ không tạo ra node hoặc link mới.
Ví dụ:
CR(@#a.+p#b.+q$$c`192.168.1.10’)
Ý nghĩa: nhảy trực tiếp tới node a mặc dù node a chưa có nhưng do nằm trong
luật CR nên node a sẽ được tạo ra, sau đó tạo ra link có hướng +p tới node b, tạo
node c và link +q nối từ a đến c trên máy 192.168.1.10
Release
Luật RL sẽ khởi tạo một Wave mới độc lập với chuỗi Wave ban đầu, mã của
Wave mới này là phần nằm trong dấu ngoặc của RL, WE của Wave mới chính là WE
của Wave ban đầu. Wave mới được tạo ra được đưa vào Wave Queue để chờ xử lý.
Phần remainder của Wave ban đầu sẽ tiếp tục được thực hiện như bình thường.
Ví dụ:
w1.RL(w2).w3
Ý nghĩa: sau khi 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 liên kết
với vị trí nào đó trong không gian dữ liệu (trong khi dữ liệu giữa các Node lan tỏa, hay
giữa các SNR lan tỏa). Dữ liệu của cùng một Node có thể xuất hiện ở những nơi khác
nhau trong cùng một SNR ở cùng một không gian cục bộ.
- 19 -
Hình 2-2: Thành phần của Spread Diagrams
Các kiểu module của Spread Diagram là
• SNR
• Move
• Rule
• Halt
• Các thành phần liên quan
o Link
o Biến Spatial
2. 8. 2
Wave và mô hình lập trình song song
Wave biểu diễn theo SD trong mạng dữ liệu có thể được điều khiển hoàn toàn
bởi Rule. Các thành phần của chuỗi Wave tự tách thành các nhánh trước và trong quá
trình thực thi.
Ví dụ: Tách chuỗi Wave
m1, m2 , m3. m4, m5 Æ
(m1. m4, m5), (m2. m4, m5 ), (m3. m4, m5)
- 20 -
Hình 2-3: Tự động tách trong chuỗi Wave
Ngoài ra, trong quá trình Wave thực thi, các thành phần của nó có thể được sao
chép và thay thế mà dữ liệu không bị thay đổi (Như trong Hình 2-4: m2 được sao chép
và thay thế mà dữ liệu vẫn được giữ nguyên)
m1. m2. m3 Æ
m1. m2, m2, m2. m3 Æ
m1.(m2. (m3, m3, m3)),
(m2. (m3, m3, m3)),
(m2. (m3, m3, m3))
Hình 2-4: Một số trường hợp xử lý song song
Ở một ví dụ khác ta thấy rõ hơn Rule điều khiển chuỗi Wave như thế nào (Hình 2-5).
- 21 -
Hình 2-5: Wave xử lý song song có kèm theo Rule
m1. OR_PARALLEL (m2, m3. m4). m5 Æ
m1. 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ất một luồng được xử lý. Chúng ta sẽ
bàn về vấn đề này thông qua các ví dụ ở dưới đây.
Ví dụ 1
s1. s2. s3. s4
Ví dụ 2
SEQUENCE (s1, s2, s3, s4)
Hai ví dụ trên được thể hiện ở Hình 2-6
- 22 -
Hình 2-6: Xử lý tuần tự không Rule và có Rule
Ngoài ra có thể ví dụ ở Hình 2-7
s1. SQ ((s2. s3), s4)
và
SQ (s1, (s2. SQ (s3, s4)))
Hình 2-7: Wave xử lý tuần tự có Rule
• Biều thức If-else
Biểu thức điều kiện “If- else” trong mô hình lập trình tuần tự có cú pháp như sau:
If (e) s1 else s2
Mệnh đề s1 thực hiện và trả về kết quả đúng thì mệnh đề s2 sẽ được thực thi.
Ở Hình 2-8: một số trường hợp với mệnh đề If – else: OR_SEQUENTIAL (( e. s1),
s2)
- 23 -
và OR_ SEQUENTIAL (AND_SEQUENTIAL ( (e. DONE
! ) , s1). s2)
Hình 2-8: một số trường hợp với mệnh đề If – else
Hình 2-9: Một số trường hợp với mệnh đề If – else
• Lựa chọn nhiều nhánh
o If – else với filter
- 24 -
Hình 2-10: else – if với filter
o Else – if parallel
Hình 2-11: Else – if parallel
o Else – if với Rule
- 25 -
Hình 2-12: Else – if với Rule
o Switch
Hình 2-13: Switch
• Vòng lặp
o while ( e ) s
o do s while ( e )
o For (e1 ; e2 ; e3) s
- 26 -
Hình 2-14: Câu lệnh lặp sử dụng Repetition
Hình 2-15: Câu lệnh lặp sử dụng Recursion
- 27 -
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 coi như việc mô tả một khuôn mẫu của hệ thống
Wave ảo, một kiểu điều khiển tự động trong không gian như: xử lý, mô phỏng hay
điểu khiển trong những hệ thống lớn và mở.
3. 1 Wave không có Rule
Các chuỗi Wave được thông dịch từng bước lần lượt từ trái qua phải, ở các giai
đoạn khác nhau. Trong tất cả các giai đoạn thực thi, Wave luôn được gắn kết với Node
nằm ở KN. Sau khi việc xử lý của Head, Tail của Wave vẫn tiếp tục được hoạt động
trong cùng một Node hoặc Node khác. Những lúc như thế, Head cũng được sao chép
chương trình điều khiển kèm theo ở cùng Node đó hoặc Node khác.
3. 1. 1
Chi tiết ví dụ về các bước của Wave
Chú ý: Simple move: là 1 Head mà Head này không thể tách được thành Head
đơn giản hơn (không có dấu phảy trong Simple move).
Để hiểu rõ hơn về các thực hiện của Wave không đi kèm với Rule , ta xét một ví dụ
đơn giản khi thực hiện ở Node b hiện tại:
F = 3. r # a, (s # ANY. T # z ), STAY. N+F. TERMINAL = CONTENT.
Hay viết ngắn gọn: F = 3. r # a, (s # ANY. T # z ),. N+F.T = C.
Ở các bước thực hiện khác nhau trong ví dụ trên, nếu Head của Wave không phải
là Simple move thì các Head này sẽ được tách ra thành các Simple move (các Simple
move cách nhau bởi các dấu phảy). Sau khi Head được xử lý thành các thành phần nhỏ
hơn (cách nhau bởi dấu phẩy), Tail của Wave sẽ được gửi tới Node tương ứng trong
trường hợp thành phần đó là Simple move hoặc Tail được sao chép và gắn với Wave
mà Head của Wave này là kết quả của một thành phần được chia ở Head trong Wave
trước. Do đó Wave mới luôn được xử lý độc lập.
Trong trường hợp rất nhiều Wave được xử lý cùng một lúc, chúng sẽ được cho
vào trong Wave Queue để chờ xử lý.
Ta phân tích lần lượt các bước thực hiện ở ví dụ trên
1. Bước 1
Head của Wave là: F=3
Và Tail
r # a, (s # ANY. T # z ), N+F. TERMINAL = CONTENT
2. Bước 2
- 28 -
Biến Frontal F đã được tạo gắn với Wave Tail cho vào cùng hàng đợi
3. Bước 3
Head của Wave là: r # a, (s # ANY. T # z ), STAY
Và Tail
N+F.TERMINAL = CONTENT
Với việc tách biến Frontal đi rồi, Head của Wave mới không thể thực thi
1 cách trực tiếp mà là sự kết hợp lại từ 3 nhánh (mà mỗi nhánh cách
nhau bởi 1 dấu phẩy). Do đó chuỗi Wave ban đầu sẽ được tách thành 3
Wave con là
9 Wave 1: r # a. N+F.TERMINAL = CONTENT
9 Wave 2: s # ANY. T # z. N+F.TERMINAL = CONTENT
9 Wave 3: N+F.TERMINAL = CONTENT
Sau đó, biến Frontal F sẽ được ghép và xuất hiện ở 3 chuỗi Wave con,
chúng sẽ được để vào trong hàng đợi Wave Queue
4. Bước 4
Wave Queue làm việc theo cơ chế: Chuỗi Wave nào vào trước thì được
thực hiện trước. Do đó Wave1 sẽ được thực hiện trước Wave2 và Wave
3, được tách có Head là
r# a
và Tail: N+F.TERMINAL = CONTENT
với biến Frontal đang được tách ra. Nhìn vào Head của Wave sau khi
được tách ta thấy Head lúc này đã là 1 simple move và có thể được thực
thi 1 cách trực tiếp (mà không qua vòng lặp tách Head cho tới khi là
simple move). Hop thực thi từ Node hiện tại b qua Link r tới Node a
(Node a được chứa trên máy tính khác). Tail cùng với biến Frontal F
được gửi tới Node a và cho vào hàng đợi Wave Queue của máy tính
đang chứa Node a này. Ở Node b tiếp tục thực thi chuỗi Wave 2
5. Bước 5
Head của Wave 2 là
s # ANY
và Tail
t # z . N+F.TERMINAL = CONTENT
biến Frontal được tách ra. Hop trong Head sẽ được thực thi và gửi tới tất
cả các Node liền kề qua Link s (trong lúc gửi, Tail cũng được gửi cùng).
Tất cả các Wave mới đều được kích hoạt trong hàng đợi ở máy tính chứa
Node của Wave đó. Wave Queue chỉ lưu lại các simple move.
6. Bước 6
- 29 -
N+F.TERMINAL = CONTENT
ở đây biến N=7 (cho trước) và F = 3 và CONTENT là b, lúc này ta có
TERMINAL là: b
3. 1. 2
Thuật toán tổng quát 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. Tất cả các công việc thực hiện trên move này sử dụng Frontal, Nodal
và biến môi trường . Các trường hợp có thể xảy ra:
i. Biến mới Nodal hoặc Frontal được tạo nếu thành phần chưa
có biến .
ii. Nếu trong chuỗi Wave có câu lệnh CREATE ở ngoài, một
trong số act có thể được nhảy tới Node khác. Trong trường
hợp này Hop sẽ trả lại Link mới hoặc Node mới.
iii. Head có thể xóa Node hiện tại hoặc Link tới Node hiện tại bới
việc gán CONTENT và LINK bằng NONE. Xóa bỏ tất cả các
Node hiện tại bằng cách xóa các Link liên kết tới Node đó.
c. Gửi các Tail của Wave, kèm theo biến Frontal tới Wave Queue ở trên
tất cả các SNR
Trong trường hợp khác
d. Phân tích Head của Wave thành các thành phần riêng (các thành
phần này cách nhau bởi dấu phẩy). Nếu mỗi thành phần riêng này
vẫn còn các thành phần trong nó nhỏ hơn và cách nhau bởi dấu
phẩy, thì công việc tách được tiếp tục cho tới khi các thành phần nhỏ
trở thành Simple move.
e. Thay thế và gắn Tail vào mỗi thành phần được chia ở trên. Do đó
Wave mới sẽ nhận được các Tail này.
f. Đưa các chuỗi Wave thu được, kèm theo biến Frontal, tới hàng đợi
Wave Queue của máy tính hiện tại.
- 30 -
Tải về để xem bản đầy đủ
Bạn đang xem 30 trang mẫu của tài liệu "Luận văn Xây dựng trình biên dịch cho ngôn ngữ Wave", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
luan_van_xay_dung_trinh_bien_dich_cho_ngon_ngu_wave.pdf