Ví dụ về Wave có Rule

Một phần của tài liệu xây dựng bộ phân tích cú pháp chương trình (Trang 30 - 32)

Xét ví dụ sau: AND_PARALLEL ( OR_SEQUENTIAL ( w1, w2 ), ( OR_PARALLEL ( w3, w4, w5 ) .w6) ) . w7

Có thể viết ngắn gọn như sau:

AP ( w1, w2) , (OP ( w3, w4, w5 ). w6). w7

Trong hình vẽ, w1, w2... w7 cùng với các Rule được thể hiện chi tiết qua từng bước. Ở các hình oval, bên trái tương ứng với tên của Rule, bên phải là Tail của Wave tương ứng với Rule đó. Hướng đi và sự di chuyển của w1, w2…w7 được chỉ rõ bởi các mũi tên.

SNR thể hiện bởi các đường kẻ ngang. Tuy nhiên ở hình vẽ này thì việc duy chuyển của các biến Frontal chúng tôi không đưa ra.

Việc xử lý ở chi tiết các bước như sau: 1. Bước 1

Luật AND_PARALLEL ở ngoài cùng thực thi, Head của Wave ban đầu tách thành:

OR_SEQUENTIAL (w1, w2)

(OR_PARALLEL (w3, w4, w5). w6) cho vào hàng đợi Wave Queue.

Tail của Wave là w7 nằm ở máy tính hiện tại và vẫn kết nối với Rule

AND_PARALEEL . Biến Frontal của Wave được tách ra. 2. Bước 2

Hai thành phần nằm trong Wave Queue ở bước 1 là: OR_SEQUENTIAL (w1, w2) (OR_PARALLEL (w3, w4, w5). w6 được lấy ra, xử lý. Dấu mở, đóng ngoặc trong mỗi Rule bị loại bỏ.

- Đầu tiên ta xử lý OR_SEQUENTIAL (w1, w2), luật này có 2 thành phần là w1w2. Ở máy tính hiện tại, w1 sẽ được kích hoạt và cho vào Wave Queue. Biến Frontal sau khi được tách từ Wave sẽ được ghép vào. Thành phần thứ 2- w2 tạm dừng lại trong máy hiện tại.

- Đến lượt (OR_PARALLEL (w3, w4, w5). w6, luật này có Tail là w6.W6

tạm dừng lại trong máy hiện tại nhưng vẫn tiếp tục kết nối với luật

OR_PARALLEL. W3, w4, w5 là ba thành phần song song, sau khi được tách riêng và kèm theo biến Frontal sẽ được kích hoạt rồi cho vào Wave Queue.

3. Bước 3

W1, w3, w4w5 sau khi được kích hoạt sẽ phát triển song song và độc lập trong KN. Giả thuyết rằng, trong kết quả của w3, w4w5 có ít nhất một kết quả trả về là TRUE. Khi đó kết quả của SNR1 sẽ trả lại TRUE, vì thế w6 sẽ được gửi tới SNR1 và được kích hoạt sau đó cho vào trong hàng đợi trên máy tính có chứa các Node SNR1. Tất nhiên, chúng có gắn các biến Frontal đi cùng. Sau khi gửi w6 tới SNR1, luật OP sẽ không rằng buộc nó với tất cả các Wave được sao chép từ w6. Trong khi đó, Wave w1 có thể đã hoàn thành hoặc có thể tiếp tục công việc của mình.

4. Bước 4

Sau khi được lấy ra từ Wave Queue tương ứng ,w6 phát triển độc lập trên tất cả các Node ở SNR1, lúc này w1 vẫn đang làm việc song song với các Wave bản sao của w6. Sau khi w1 kết thúc (giả thiết w1 kết thúc, w2 sẽ được giữ lại bởi luật OS vì coi như w1 trả lại kết quả TRUE) và các Wave bản sao của w6 cũng kết thúc (nếu không giả thiết, trên thực tế nó có thể kết thúc hoặc không). Lúc này, SNR2 được thành lập.

Từ tất cả các Node ở SNR2, w7 mà đã kết hợp với các luật AP được kích hoạt và chỉ định sẽ cho vào Wave Queue trên máy tính hiện tại. Sau đó nó ghép với các biến Frontal mang tới từ Node trên SNR2 bởi thành phần 1 và thành phần 2 ban đầu của luật AP. Ứng dụng của w7, khả năng cung cấp sự đồng bộ hóa cục bộ của rất nhiều hệ xử lý phân tán được liên kết với nhau từ nhiều Rule khác nhau (OS, OP…). Luật AP, sau khi gửi Tail của w7 tới SNR2 không rằng buộc của nó với các Wave được sao chép từ w7. Sau đó chúng kết thúc quá trình hoạt động.

5. Bước 5

Wave w7 không phụ thuộc vào các Node của SNR2, sau đó được đặt tại các Node của SNR3.

Vì vậy ta thấy Wave w1,w2…w7 có thể được đặt ở các vị trí khác nhau trong cấu trúc và có thể được duy trì chúng cùng với Rule như đã miêu tả ở trên.

Một phần của tài liệu xây dựng bộ phân tích cú pháp chương trình (Trang 30 - 32)