X. CÔNG CỤ HỖ TRỢ ONTOLOGY
b. AST Parser
AST (Abstract Syntax Tree) có thể được so sánh với mô hình cây DOM của một file XML. Giống như DOM, AST cho phép ta chỉnh sửa mô hình cây và ánh xạ những thay đổi vào source code.
Java Model biểu diễn một project Java thành dưới dạng một cấu trúc cây như sau:
Cấu trúc dạng cây một project Java
Các node trong Java Model cài đặt một trong các interface sau:
IJavaProject: là node mô tả một Java Project. Nó bao gồm các
IPackageFragmentRoots là các node con.
IPackageFragmentRoot: có thể là source hoặc là thư mục class của
một project, file .zip, .jar. IPackageFragmentRoot có thể chứa source hoặc file binary.
IPackageFragment:một package đơn giản, nó bao gồm các
ICompilationUnits hoặc IClassFiles, phụ thuộc vào liệu
IPackageFragmentRoot là kiểu source hay kiểu binary. Chú ý rằng
IPackageFragment không được tổ chức theo kiểu cha-con. Ví dụ
net.sf.a không phải là cha của net.sf.a.b. Chúng là hai con hoàn toàn độc lập nhau của cùng một IPackageFragmentRoot.
ICompilationUnit: một file source Java
IImportDeclaration, IType, IField, IInitializer, IMethod: là con của
ICompilationUnit.
Tìm kiếm node AST
Một chương trình “Hello world” đơn giản cũng sinh ra một cây khá phức tạp. Vậy để tìm được lời gọi hàm println("Hello World")trong chương trình thì phải làm thế nào? Ta có thể scan qua tất cả các level trên cây, nhưng điều này thực sự không tiện lợi vì nó mất nhiều thời gian.
Có một giải pháp tốt hơn đó là cho phép truy vấn một node bằng cách sử dụng một bộ viếng thăm visitor. Mọi lớp con của lớp ASTNode đều có hai method đó là visit() và endVisit(). Thêm vào đó, lớp ASTVisistor khai báo hai method là preVisist(ASTNode node) và postVisist(ASTNode node).
Lương Trí Quân – Lớp Cao Học CNTT K6 Trang 35
Mọi node AST sẽ được truyền vào lớp con của lớp ASTVisitor. AST sẽ từng bước đệ quy viếng thăm qua cây gọi các method của bộ viếng thăm cho từng AST node theo thứ tự sau:
preVisit(ASTNode node) visit(MethodInvocation node)
con của node hiện tại sẽ được thực hiện đệ quy nếu bộ viếng thăm của node hiện tại trả về giá trị true
endVisit(MethodInvocation node) postVisit(ASTNode node)
Lương Trí Quân – Lớp Cao Học CNTT K6 Trang 36
Tài liệu tham khảo
[1] Trung Hung Vo, Software Maintenance, Jule 8, 2007
[2] Barrasa J, Corcho O, Blanco R et al. Esperonto Project (IST-2001-34373) De -liverable 8.1. Test Case System Specification. Fund Finder. Subject: Ontol- ogy Integration & Mapping June 2003
[3] Trần Đình Khang, Vũ Tuyết Trinh, Đỗ Đức Thành, Đỗ Thị Ngọc Quỳnh. Một phương pháp tìm kiếm dựa trên Ontology phục vụ quản lý thông tin khoa học công nghệ. Bộ môn Hệ thống Thông tin, Trường Đại Học Bách Khoa Hà Nội.
[4] http://www.acm.org/
[5] http://what.csc.villanova.edu/twiki/bin/view/Main/OntologyProject
[6] http://what.csc.villanova.edu/twiki/bin/view/Main/IntroducingGroupMembers
[7] http://what.csc.villanova.edu/twiki/bin/view/Main/SourcesUsed
[8] http://what.csc.villanova.edu/twiki/bin/view/Main/OWLFileInformation
[9] Nhóm nghiên cứu của thầy Đỗ Phúc. Phát triển một Hệ thống S.E Hỗ trợ Tìm kiếm Thông tin, thuộc lãnh vực CNTT trên Internet qua từ khóa bằng tiếng Việt.