AST Parser

Một phần của tài liệu TÌM HIỂU ONTOLOGY VÀ CÔNG CỤ PHÁT TRIỂN ỨNG DỤNG (Trang 34)

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.

Một phần của tài liệu TÌM HIỂU ONTOLOGY VÀ CÔNG CỤ PHÁT TRIỂN ỨNG DỤNG (Trang 34)

Tải bản đầy đủ (PDF)

(36 trang)