Chức năng JaMoPP

Một phần của tài liệu Tìm hiểu và vận dụng ngôn ngữ chuyển đổi mô hình trong phát triển phần mềm (Trang 34)

Để Java metamodel trên sử dụng được trong thực tế thì phải có một đặc tả cú pháp văn bản để các công cụ có thể được tạo ra. Bước tạo ra này sử dụng các

quy tắc cú pháp văn bản được đinh nghĩa trong ngôn ngữ đặc tả CS của

EMFText như là một đầu vào (mỗi một quy tắc cú pháp được định nghĩa cho

một metaclass). Kết quả và cài đặt các thành phần của công cụ (ví dụ: parser, printer và tập các reference resolvers) như sau:

Parsing: dựa trên Context-free Grammar (CFG) được sinh ra từ đặc tả

CS và được cài đặt sử dụng chiến lược phân tích giảm dần đệ quy mô tả.

Mặc dù Java không hoàn toàn là context-free.

Reference Resolving: tương ứng với phân tích ngữ nghĩa tĩnh trong mô

hình Java. EMFText tạo ra reference resolvers cho các tham chiếu

(references) không bị giới hạn (non-containment) bằng cách thay các tên

tượng trưng trong mô hình phân tích cấu trúc cây bằng các liên kết rõ ràng đến phần tử tương ứng. Bởi vì sự phân mảnh cao của các mô hình Java trong các tệp khác nhau, cho nên sẽ có rât nhiều các tham chiếu không bị giới hạn (non-containment). JaMoPP sử dụng global registry (tương ứng với Java classpath) để quản lý tài nguyên và vị trí vật lý.

Registry được sử dụng để tìm các tài nguyên mô hình liên kết chéo theo

yêu cầu và cho phép tham chiếu được giải quyết trong nhiều tệp. Thêm

vào đó, các tham chiếu có thể trỏ đến lớp trong thư viện mà ở dạng mã nhị phân. Để giải quyết vấn đề này, JaMoPP sử dụng bộ phân tích BCEL (Byte Code Engineering Library) và dịch đầu ra thành thể hiện của JaMoPP metamodel.

Printing Java Source Files: là đảo ngược của tiến trình phân tích.

EMFText tạo ra một printer từ đặc tả CS mà chứa phương thức print riêng cho từng metaclass. Theo từng quy tắc CS thuộc về một class, printer sinh ra từ khóa cho các phần tử của model, giá trị thuộc tính của phần tử và gọi đệ quy các phương thức để in ra các thành phần.

Tool Integration: công cụ tích hợp với ngôn ngữ mô hình hóa dựa trên

Ecore và công cụ được tích hợp vào nền tảng Eclipse bằng Eclips Modelling Framework (EMF) [11]. Các ngôn ngữ mới có thể tích hợp trong suốt vào nền tảng này bằng cách phát triển giao diện EMF

Resource. Do đó, JaMoPP cung cấp JavaResource cho các tệp *.java và

nguồn nhị phân để nạp và chứa các mô hình Java. Do đó, mặc dù là cú pháp văn bản, nhưng Java models có thể được xử lý bằng các công cụ

dựa trên EMF như bắt kỳ mô hình khác.

Một phần của tài liệu Tìm hiểu và vận dụng ngôn ngữ chuyển đổi mô hình trong phát triển phần mềm (Trang 34)