TÌM HIỂU CÂY CÚ PHÁP TRỪU TƯỢNG (AST)

22 1.2K 3
TÌM HIỂU CÂY CÚ PHÁP TRỪU TƯỢNG (AST)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

LÝ THUYẾT KNOWLEDGE DISCOVERY SOFTWARE MINING ASTRACT SYNTAX TREE (AST) Lý thuyết Công nghệ Tri thức GVHD : TS. Phan Huy Khánh TÌM HIỂU CÂY CÚ PHÁP TRỪU TƯỢNG (AST) I. Khái niệm Trong khoa học máy tính, một cây cú pháp trừu tượng (AST), hoặc chỉ cây cú pháp, là một đại diện trong cơ cấu cây cú pháp trừu tượng của mã nguồn viết bằng một ngôn ngữ lập trình. Mỗi nút của cây biểu thị một xây dựng xảy ra trong mã nguồn. Cú pháp là "trừu tượng" theo ý nghĩa là nó không đại diện cho từng chi tiết sẽ xuất hiện trong các cú pháp thực tế. Ví dụ, dấu ngoặc nhóm được ngầm định trong cấu trúc cây, và một cú pháp xây dựng như một biểu thức If- cond-then đó có thể được biểu thị bằng một nút duy nhất với hai nhánh. Điều này làm cho cây Cú pháp trừu tượng khác nhau từ cây Cú pháp cụ thể, theo truyền thống được gọi là cây phân tích cú pháp, thường được xây dựng bởi các phần phân tích cú pháp của các dịch mã nguồn, biên soạn quy trình (mặc dù có lẽ đặt tên unintuitive). Một khi được xây dựng, thông tin bổ sung được thêm vào bằng cách xử lý tiếp theo AST, ví dụ, phân tích ngữ nghĩa. II-Thiết kế cây cú pháp trừu tượng Mỗi nút được biểu diễn bằng một cấu trúc cho một kiểu nút cụ thể. Một nút được tạo ra bằng cách gọi một hàm trả về một con trỏ trỏ đến một cấu trúc đại diện cho nút đó. Chức năng này cũng như các đối số nút con khác cho một kiểu nút cụ thể. Ví dụ, một nút chữ ký có thể được tạo ra bằng cách sử dụng chức năng node_signature . Cú pháp chữ ký là: signature = operationName [attributes] arguments responses Do đó, một nút chữ ký sẽ có các nút phụ cho tên hoạt động, thuộc tính, đối số và phản ứng. Cơ cấu và chức năng mà gọi trình tạo ra nó là: Nhóm : Vũ-Uyên-Thảo -2- Lý thuyết Công nghệ Tri thức GVHD : TS. Phan Huy Khánh Struct Signature { Struct AttributeList * thuộc tính; Struct Identifier * tên; Struct DeclarationList * đối số; Struct TerminationSet * phản ứng; Extern struct Signature * node_signature ( Struct AttributeList * thuộc tính; Struct Identifier * tên; Struct DeclarationList * đối số; Struct TerminationSet * phản ứng); Phân tích cú pháp làm việc theo cách của mình để dưới cùng của từng ngành, sau đó backtracks lên, tạo ra các nút giống như vậy, vì thế các đối số cho node_signature chức năng được biết đến trước khi nó được gọi. Ở đây chức năng mà phân tích chữ ký chạy sẽ phân tích các chức năng mà nhiều cây phụ khác. Mỗi phần này trả về một con trỏ tới các nút cho cây con. Các chức năng node_signature sau đó được gọi với các con trỏ như các đối số. Chức năng node_signature sau đó phân bổ không gian cho một nút chữ ký, và bản sao các node con trỏ vào cấu trúc cho các node mới. Các nút khác được xử lý một cách tương tự. Hai loại chính của nút được xử lý: Những thành phần mà có một loạt các nút con, trong đó chữ ký là một ví dụ, và những thành phần mà có một danh sách. Sau đó có hai tham số, các con trỏ tới các nút ở đầu và đuôi của danh sách. Mỗi nút sẽ đã có các nút con liên kết với nó, tùy thuộc vào loại của nút. 1/ Cây đi bộ Như khi tạo cây, một chức năng được cung cấp cho từng loại nút. Đối với DPL, cây đi bộ khác nhau sử dụng mã khác nhau. Ví dụ, một máy in đẹp được viết bằng DPL, và một phạm vi kiểm tra được viết bằng C. Cả hai cây đi bộ, không có mã thông thường, mặc dù thực hiện các hoạt động tương tự. Nhóm : Vũ-Uyên-Thảo -3- Lý thuyết Công nghệ Tri thức GVHD : TS. Phan Huy Khánh Các máy in đẹp, có một chức năng cho từng nút. Chức năng này chạy sẽ tiếp tục in nút con, và cho biết thêm trong cú pháp yêu cầu bất kỳ (Ví dụ ngoặc, vv.) Việc kiểm tra phạm vi thực hiện một nhiệm vụ tương tự, cách gọi các chức năng để thực hiện phạm vi kiểm tra của nút con. 2/ Chú thích Vấn đề duy nhất là sẽ xuất hiện cho được các bản đồ của cú pháp nút AST. Trong một số trường hợp các nút bổ sung đã được tạo ra để tạo điều kiện cho các mã, và không có bản đồ trực tiếp giữa các nút và các mặt hàng của cú pháp. 3/ Phương pháp tiếp cận gói Modula-3 Các gói Modula-3 cung cấp trang thiết bị cơ bản để xác định một Cây cú pháp trừu tượng. Nó định nghĩa một loại nút cơ bản AST.NODE, và phân biệt giao diện, xác định một tập hợp các phương pháp tiêu chuẩn áp dụng đối với một nút AST. ASTs ngôn ngữ cụ thể được định nghĩa bởi subtyping AST.NODE và cung cấp triển khai cho các phương pháp tiêu chuẩn. Phương pháp và tiêu chuẩn hỗ trợ bao gồm: • Init - cung cấp một bài cho bất kỳ mã không khởi động • Tên - trả lại tên của một nút (hữu dụng cho gỡ lỗi) •Cung cấp thông tin nút (số nút con, con trỏ trỏ tới…) • Iterator cho nút con thông qua các cấp •Hỗ trợ cho cây đi bộ - thăm nút con • Hỗ trợ cho các bản sao cây • Hỗ trợ định "hiển thị" một nút cây - ngôn ngữ cụ thể Cây thực sự là một đồ thị, gồm một tập các nút kết nối được tất cả các trường hợp của phân nhóm của kiểu đối tượng nút. Các nút có thể có các thuộc tính, mà cuối cùng biểu diễn như các lĩnh vực đối tượng hoặc phương pháp. Nhóm : Vũ-Uyên-Thảo -4- Lý thuyết Công nghệ Tri thức GVHD : TS. Phan Huy Khánh Thông thường, một thuộc tính là một tham chiếu hoặc kết nối tới một số nút khác trong AST. Một AST cho một ngôn ngữ cụ thể được quy định như một tập hợp các giao diện, mà chia sẻ quy ước đặt tên LLAST, nơi mà LL là một tiền tố ngôn ngữ cụ thể. Trong thời hạn thiết lập này, nó cũng thường để chỉ định AST là một loạt các quan điểm, mỗi cung cấp một số các nút mới (có thể không có) và các thuộc tính mới trên các nút quy định tại các lớp khác. Các tờ khai của các loại nút và các chi tiết kỹ thuật của nút các thuộc tính được chia thành các giao diện riêng biệt. Các loại nút cho xem từng được định nghĩa trong một giao diện có tên LLAST_VV, nơi VV là một thẻ biểu thị quan điểm. Nền tảng thuộc tính trên các nút được quy định trong một giao diện được đặt tên LLAST_VV_K, trong đó K là một thẻ mà biểu thị hoặc là các loại thuộc tính đang được thêm vào hoặc chỉ ra một sub-view. Ví dụ, F là quy ước được sử dụng để chỉ ra các thuộc tính biểu diễn như các lĩnh vực đối tượng, và cho thấy phương pháp được áp dụng cho phần xem này. Các loại thuộc tính cho Modula-3 rơi vào 2 nhóm : Các nhóm đầu tiên gồm các loại từ vựng, biểu thị, ví dụ, các ký tự của một nhận dạng của các ký tự của một văn bản chữ. Những loại được cho định nghĩa cứng nhắc của việc thực hiện trình biên dịch cụ thể. Nhóm thứ hai bao gồm các con của một nút, mà luôn luôn là nút các loại. Lý do đằng sau này là khi một loại nút mới được tạo ra, là có tổng hợp của tất cả các thuộc tính đã được quy định tại các quan điểm đóng góp. Các quan điểm khác nhau, tuy nhiên, có khác biệt, và không nhận thức của nhau. 4/ Các phương pháp tiếp cận AST DIMMA a/ Yêu cầu • Một cơ sở để tạo ra các nút cho từng phần tử của cú pháp • Các nút phải được tạo ra từ dưới lên, do đó là mỗi node được tạo ra, nó biết về nút con (nếu có). Nhóm : Vũ-Uyên-Thảo -5- Lý thuyết Công nghệ Tri thức GVHD : TS. Phan Huy Khánh • Truy cập thông tin trong nút là có sẵn chỉ bằng gọi trình, để đảm bảo đóng gói và an toàn dữ liệu. • Truy cập thông tin trong nút cơ sở xem xét • Nó phải có thể là : - Lặp trong suốt toàn bộ cây - Đi bộ thông qua các con của một node - Hiển thị một nút - Bổ sung thêm node xem. • Mã AST nên được viết bằng C + + b. Các tính năng hữu ích của C + + Các tính năng rõ ràng nhất của C + + là sự giúp đỡ của lớp trừu tượng. Một lớp "nút" có thể chứa các chức năng tinh khiết ảo mà có thể sau đó được thực hiện trong một lớp có nguồn gốc đối với từng loại nút. Bởi điều này có nghĩa nút với hành vi khác nhau có thể được xử lý trong cùng một cách. Đi từng yêu cầu nói trên lần lượt: - Một nút sẽ được xác định cho từng phần tử của cú pháp. Điều này sẽ được xuất phát từ nút "một lớp cơ sở", trong đó có (phần lớn) các chức năng tinh khiết ảo. Điều này có thể là gián tiếp thông qua các nút khác chung chung. Các nút có thể sau đó được tạo ra bằng cách sử dụng toán tử mới. - Các node sẽ được tạo ra từ dưới lên, và con trỏ tới các nút tiếp theo truyền cho các nút mới khi chúng được tạo ra. Như vậy sau này các nút hoặc các nhóm các nút có thể bao gồm một đối tượng ở bên phải của riêng của họ. - Tất cả dữ liệu sẽ được làm riêng biệt đến các nút (ở một số mức độ derivation) và tiếp cận với thế giới bên ngoài chỉ bằng cách sử dụng chức năng thành viên. Trong nhiều trường hợp, các dữ liệu sẽ không có sẵn trực tiếp dưới mọi hình thức, nhưng hiệu quả của nó nhìn thấy bằng cách thực hiện một chức năng thành viên. Nhóm : Vũ-Uyên-Thảo -6- Lý thuyết Công nghệ Tri thức GVHD : TS. Phan Huy Khánh - Việc sử dụng các "quan điểm" có thể được hỗ trợ bởi việc sử dụng các chức năng thành viên. Chức năng Thành viên sẽ được cung cấp cho: - Việc lặp trong cả cây - Đi bộ thông qua các con của một node - Hiển thị một nút chức năng. c. Xác Nhận Các AST đã được xác nhận bằng cách áp dụng nó với ngôn ngữ nguyên mẫu DPL. III-Lớp cơ sở cho AST Phần này cung cấp một đề cương xây dựng một nút AST, và xác định các dữ liệu và chức năng thành viên yêu cầu trong các nút cơ bản. Có hai loại chính của lớp: Những thành phần đại diện cho một nút cá nhân, và những thành phần đại diện cho một danh sách các nút. Một lớp quản lý cũng cần thiết xử lý các nhóm sau : 1/ Lớp nút Các lớp cơ bản nhất trong thiết kế AST là lớp Node. Mỗi phần tử của cú pháp được đại diện bởi một node. Lớp nút cơ bản cung cấp một nhóm nhà xây dựng và chức năng một số thành viên, hầu hết là nói chung không được sử dụng bởi các lớp học có nguồn gốc, trong đó cung cấp cho nhà xây dựng riêng của chúng cụ thể thành viên dữ liệu. Tuy nhiên những nút cơ bản đã được để vào cung cấp tổng quát hơn, và để cung cấp một bản mẫu cho các lớp có nguồn gốc. Hai thành phần dữ liệu được cung cấp: Một con trỏ vào một danh sách các nút, và một chuỗi, mà thường được sử dụng để giữ lại tên của lớp có nguồn gốc, và do đó cung cấp viện trợ để gỡ lỗi. 2/ Nhóm danh sách nút Nhóm : Vũ-Uyên-Thảo -7- Lý thuyết Công nghệ Tri thức GVHD : TS. Phan Huy Khánh Một danh sách các node bao gồm một đầu, mà là một con trỏ trỏ tới một nút, và 1 đuôi, mà là một con trỏ đến một danh sách nút thêm. Hệ thống có thể được thêm vào phần đầu của một danh sách mới, và đuôi đến danh sách hiện tại. Một danh sách trống sẽ có cả hai đầu và đuôi đặt thành Null. Các mục cuối trong một danh sách sẽ có đuôi của nó thiết lập để Null. c/ Lớp hỗ trợ Một số lớp chung chung cung cấp hỗ trợ cho các lớp khác bằng cách định nghĩa cụ thể dữ liệu hoặc hoạt động. IV-Chi tiết phương pháp xây dựng AST Phần này mô tả thiết kế chi tiết của các nút cho từng yếu tố của cú pháp, trong dữ liệu cụ thể các thành viên và các chức năng constructors. Các nút cá nhân được mô tả trong các phần sau trong bảng chữ cái trật tự. Khi bắt đầu các cuộc thảo luận trên mỗi node, cú pháp có liên quan được hiển thị. Điều này sau đó có thể dễ dàng liên quan đến dữ liệu thành viên và các constructor cho nút đó. Việc sử dụng các constructor rất nhiều tùy chọn đơn giản hoá việc sử dụng các nút, cung cấp lớn hơn nhiều cho các lập trình ứng dụng. * Nút a/ Các thuộc tính nút attributeList = "<" (attributeName [attributeBlock]) ">" Một thuộc tính có một số biến của tên và (tùy chọn) cặp khối. Điều này được đại diện bởi một danh sách thuộc tính của đối tượng, mà là một danh sách các con trỏ trỏ tới nút thuộc tính các đối tượng. b/ Các ràng buộc nút definition = name {name} “=” expression assignment = name {name} “:=” expression initialisation = declaration {declaration} “:=” expression Nhóm : Vũ-Uyên-Thảo -8- Lý thuyết Công nghệ Tri thức GVHD : TS. Phan Huy Khánh V-Xem cụ thể Phần này mô tả các dữ liệu và hàm thành viên cho các nút của AST cho quan điểm cụ thể. 1/ Máy in đẹp Mỗi nút có một chức năng hiển thị là một trong những chức năng thành viên của mình. Chức năng này bình thường sẽ hiển thị bất kỳ phần cú pháp của nút hiện hành, và gọi hiển thị chức năng trên mỗi nút-phụ. Các hiển thị do đó chức năng thực hiện lặp lại của chính mình trong suốt cây. Một trình hiển thị tại bất kỳ cấp độ sẽ hiển thị các nút được chỉ định, và tất cả các nút phụ của nút đó. Mỗi chức năng hiển thị cho biết thêm bất kỳ cú pháp cần thiết cho nút đó, ví dụ: các từ "Đối tượng" hoặc "sau khi xử lý", thụt đầu dòng, dấu ngoặc đơn hoặc bất kỳ nhà khai thác như thích hợp. 2/ Phạm vi Việc kiểm tra phạm vi truy cập các AST bằng cách thức của một hàm phạm vi được cung cấp bởi mỗi nút. 3/ Kết luận Các suy luận truy cập AST bằng cách thức của một hàm, thường được gọi là findType, cho mỗi nút. Một số nút có thể hỗ trợ một số phương pháp khác nhau để dùng bằng suy luận kiểu. Nhóm : Vũ-Uyên-Thảo -9- Bài tập Công nghệ Tri thức GVHD : TS.Phan Huy Khánh BÀI TẬP CHẨN ĐOÁN VÀ HƯỚNG DẪN SỬ DỤNG THUỐC Nhóm : Vũ-Uyên-Thảo -10- [...]... các triệu chứng và hướng dẫn sử dụng các loại thuốc đặc trị 2 Mục đích đề tài Nhằm giúp cho mọi người có thể đoán được các bệnh từ các triệu chứng thường gặp trong cuộc sống hằng ngày, từ đó có các biện pháp điều trị hợp lý và tránh các rũi ro có thể mắc phải khi không chủ động phòng ngừa 3 Phát biểu bài toán Bài toán là một hệ chuyên gia được xây dựng nhằm đoán một số bệnh thông thường mà mọi người thường... triệu chứng và thuốc của bệnh cảm như sau: CAM SOMUI NHUCDAU HO NONGSOT THUOCSOMUI THUOCNHUCDAU THUOCHO THUOCNONGSOT Panadol Naproxem Paracetamol Xiro ho Aspirin Penixilin Bophe Sunpamit Ergotamin Hình 1: Cây biểu thị mối quan hệ các triệu chứng cảm II Phân tích và thiết kế 1 Xây dựng các vị từ Stt Vị từ Giải thích 1 TC_CAM(X) X là các triệu chứng của bệnh cảm 2 TC_BENH(X,Y) X là các triệu chứng của bệnh... đoán được một số bệnh thông thường, các thông tin về triệu chứng cũng như là các loại thuốc vẫn chưa được phong phú Nếu có thể, chương trình có thể được phát triển theo hướng chẩn đoán bệnh cho những đối tượng khác nhau, lứa tuổi khác nhau để việc chẩn đoán đưa ra bệnh cho người sử dụng có thể được chính xác hơn, cụ thể hơn Nhóm : Vũ-Uyên-Thảo -22- . thường, một thuộc tính là một tham chi u hoặc kết nối tới một số nút khác trong AST. Một AST cho một ngôn ngữ cụ thể được quy định như một tập hợp các giao diện, mà chia sẻ quy ước đặt tên LLAST,. các nút quy định tại các lớp khác. Các tờ khai của các loại nút và các chi tiết kỹ thuật của nút các thuộc tính được chia thành các giao diện riêng biệt. Các loại nút cho xem từng được định. lớp khác bằng cách định nghĩa cụ thể dữ liệu hoặc hoạt động. IV -Chi tiết phương pháp xây dựng AST Phần này mô tả thiết kế chi tiết của các nút cho từng yếu tố của cú pháp, trong dữ liệu cụ

Ngày đăng: 17/07/2015, 11:42

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan