Ngôn ngữ hình thức, automata và các giải thuật phân tích cú pháp

MỤC LỤC

CÁC DẠNG CHUẨN 1) DẠNG CHUẨN CHOMSKY

DẠNG CHUẨN GREIBACH

Hiện nay, đã có nhiều công cụ và giải thuật phân tích cú pháp, các giải thuật này có thể theo phương pháp từ trên xuống hay từ dưới lên và có thể xử lý được lớp văn phạm phi ngữ cảnh tổng quát hay là lớp con của nó (một tập văn phạm nhỏ của tập văn phạm phi ngữ cảnh tổng quát). Việc tìm hiểu các giải thuật và công cụ hiện có giúp chúng ta có một cái nhìn tổng thể về việc phân tích cú pháp cũng như có điều kiện để so sánh ưu nhược điển của từng giải thuật, hơn nữa nó giúp tìm ra những cách giải quyết thích hợp trong vấn đề phân tích cú pháp.

CÁC GIẢI THUẬT

Thông thường khó xác định giải thuật phân tích cú pháp LL hay LR áp dụng được với lớp văn phạm lớn hơn, nhưng theo (Compilers-V. Aho) thì lớp văn phạm có thể phân tích bằng giải thuật LR chứa lớp văn phạm có thể phân tích bằng giải thuật LL. Ta cũng nhận xét tại một thời điểm trong quá trình phân tích thì giải thuật phân tích cú pháp LL chỉ làm việc với một luật sinh mà thôi, còn giải thuật phân tích cú pháp LR có thể làm việc với nhiều luật sinh cùng một lúc.

Hình 1 : Hoạt động của bộ phân tích cú pháp LL
Hình 1 : Hoạt động của bộ phân tích cú pháp LL

CÔNG CỤ PHÂN TÍCH CÚ PHÁP YACC 1- Tổng Quan

• Phần C-routine codes : Phần này bao gồm các đoạn mã chương trình C mà chúng ta có thể khai báo các đoạn chương trình con để xây dựng bộ xử lý lỗi, bộ phân tích từ vựng (Yac không xây dựng bộ phân tích từ vựng) hay các đoạn chương trình mà chúng ta có thể sử dụng trong các hành động ngữ nghĩa. Vì các qui tắc trên có thể không phải luôn luôn là điều mà người sử dụng mong muốn, cho nên Yacc cung cấp một cơ chế tổng quát để giải quyết đụng độ shift/reduce bằng cách cho phép người sử dụng có thể gán độ ưu tiên và kết hợp trái/phải hoặc không có kết hợp trong phần khai báo.

GIẢI THUẬT PHÂN TÍCH CÚ PHÁP EARLEY VÀ CYK

GIẢI THUẬT PHÂN TÍCH CÚ PHÁP EARLEY 1.1 Giới Thiệu

    + Complete là tìm trong tập trạng thái If (với f là pointer của thực thể đang xét ) các thực thể có ký hiệu nằm bên phải của dấu chấm trùng với ký hiệu vế trái của thực thể có dấu chấm đang xét, thêm các thực thể mới tìm được vào cuối trạng thái Ii với dấu chấm dịch qua phải một ký hiệu. Trên văn phạm GRAMMAR CALCULUS, giải thuật PA có độ phức tạp thời gian là O(n2) trong khi SBU và Earley có độ phức tạp thời gian tuyến tính và giải thuật Earley nhanh hơn SBU một chút (do độ phức tạp thời gian của giải thuật SBU có hệ số lớn hơn).

    GIẢI THUẬT PHÂN TÍCH CÚ PHÁP CYK 2.1- Giới Thiệu

    Do cách biểu văn phạm khá thoáng như trên nên giải thuật Earley có thể mang lại những kết quả to lớn trong các ứng dụng cũng như về lý thuyết (ví dụ : có thể ứng dụng Earley trong việc nhận dạng ngôn ngữ tự nhiên, ..). Độ phức tạp thời gian theo kích thước văn phạm của giải thuật là O(n2), độ phức tạp thời gian theo chiều dài câu nhập là O(n3), trong một số lớp văn phạm nó có độ phức tạp theo chiều dài câu nhập là O(n2) hoặc O(n).

    TÌM HIỂU VỀ PHẦN MỀM HỖ TRỢ HỌC TẬP VÀ GIẢNG DẠY

    + Quyết định sơ bộ phương pháp giảng dạy, việc đưa ra một phương pháp giảng dạy tốt phù hợp với điều kiện giảng dạy sẽ mang lại kết quả rất khả quang cho người học. • Phát Triển Và Tổng Hợp. + Hoàn tất phương pháp giảng dạy bằng cách đưa ra các tài liệu và trình tự giảng dạy. Trong giai đoạn cần phải thực hiện tốt cách thức trình bày các tài liệu và thứ tự xếp sếp các bài giảng một cách hợp lý. • Đánh Giá Cuối Cùng. + Xem xét lại lại phương pháp, điều kiện , kết quả có phù hợp nhau không và sữa đổi cho phù hợp. b) Các Phần Mềm Giảng Dạy Hiện Tại. Việc thiết kế các mô hình phục vụ cho việc học tập thông qua máy tính hiện nay được thế giới áp dụng rỗng rãi, với các ưu điểm của nó là người học không cần học qua mô hình thật (mắc tiền và nguy hiểm) mà thông thông qua mô hình hóa trên máy tính.

    PHÂN TÍCH VÀ THIẾT KẾ

    MÔI TRƯỜNG HOẠT ĐỘNG và CÁC SƠ ĐỒ DFD 2.1 Môi Trường Hoạt Động & Ngôn Ngữ Lập Trình

      Đây là một chuơng trình mang tính dành học việc học, nghiên cứu cách thực hiện giải thuật nên chương trình chỉ thiết kế chạy trên máy tính cá nhân, hiện tại vấn đề chạy trên mạng chưa đặt ra ở đây. Chuơng trình phát triển chạy trên môi trường HĐH Microsoft Windows 95, đây là một HĐH được sử dụng rỗng rãi nhất hiện nay trên thế giới. Chương trình sẽ kế thừa những tiện ích của HĐH này nên sẽ không thể chạy trên môi trường DOS hay Windows 3.11. Ngôn ngữ Visual C++ 5.0 được sử dụng để hiện thực hệ thống, đây là một ngôn ngữ lập trình huớng đối tượng mạnh và hiện nay được sử dụng rộng rãi. Đặc biệt chương trình sẽ sử dụng các class được định nghĩa trong MFC. a) Trường hợp biến đổi văn phạm. Văn Phạm phi ngữ cảnh bất kỳ. Bộ công cụ thực hiện. Thông báo quá trình thực hiện giải thuật và kết quả. - Bỏ các LS rỗng - Bỏ các LS đơn vị - Bỏ các LS vô dụng - Dạng chuẩn chomsky - Dạng chuẩn Greibach. b) Trường hợp phân tích một câu nhập. • Process So sánh số bước phân tích của hai giải thuật CYK và Earley.(*). c) Mô hình Data Flow Diagram Chi Tiết + Biến đổi văn phạm.

      CÁCH THỨC NHẬP VÀ XUẤT DỮ LIỆU

        Dữ liệu xuất ở đây chủ yếu là các dòng văn bản kết quả xuất ra màn hình cho người sử dụng xem, đồng thời lưu xuống file để lưu trữ (dữ liệu lưu là các tập văn phạm kết quả khi thực hiện biến đổi văn phạm). Danh sách vế phải (tương ứng thứ tự với vế trái). Do đó có thể soạn thảo tập văn phạm G bằng một trình soạn thảo văn bảng bất kỳ là lưu ở dạng .txt, chương trình cũng sẽ lưu tập văn phạm với định dạng trên khi bạn bấm nút lưu. IV - TỔ CHỨC CẤU TRÚC DỮ LIỆU. d) Lưu tập các luật sinh P : Sử dụng một mãng chuỗi ký tự cho vế phải và một mãng cho vế trái. Vế Trái Vế Phải. 2- Cấu Trúc Dữ Liệu Cho Giải Thuật CYK a) Sơ đồ cấu trúc dữ liệu.

        Bảng phân tích cú pháp T là một mãng hai chiều, ở đây giới hạn chiều dài tối đa của chuỗi  nhập (số token) là MAX ký tự do đó, mãng T được khai báo như sau trong Visual C++:
        Bảng phân tích cú pháp T là một mãng hai chiều, ở đây giới hạn chiều dài tối đa của chuỗi nhập (số token) là MAX ký tự do đó, mãng T được khai báo như sau trong Visual C++:

        START

        Loại Bỏ Các Luật Sinh Đơn Vị

        - Aùp dụng việc thay thế bằng cách : lấy vế phải của luật sinh không đơn vị có vế trái là vế phải của luật sinh đơn vị thay vào vế phải của luật sinh đơn vị tương ứng.

        START V1= { }

        ENDS

        Đp=p+1

        ĐĐ

        ĐS p> số luật sinh

        Hoạt động của từng Menu Item

        • Công Cụ | Các Giải Thuật Phân Tích Cú Pháp | So Sánh Độ Phức Tạp : Thực hiện so sánh độ phức tạp của hai giải thuật : “Giải thuật Earley” & “Giải thuật CYK”. • Ngôn Ngữ Tự Nhiên | Nhận Dạng : Phần áp dụng giải thuật Earley để nhận dạng một câu nhập thuộc ngôn ngữ tự nhiên (Tiếng Anh). • Ngôn Ngữ Tự Nhiên | Biên Soạn Văn Phạm : Công cụ dùng để biên soạn tập văn phạm của ngôn ngữ tự nhiện (là một công cụ của bộ nhận dạng).

        NHẬN DẠNG NGÔN NGỮ TỰ NHIÊN

        XÂY DỰNG TỪ ĐIỂN CÁC TOKEN

        Để tạo ra được bộ từ điển này cần có một sự góp ý và trợ giúp rất nhiều của các chuyên gia về ngôn ngữ học, biên soạn từ điển. Thực chất của bộ từ điển token là phân các từ ra thành nhiều nhóm, sẽ nhóm được đại diện bằng một token. Trong luận văn này, tôi xin trình bày một cách biên soạn bộ từ điển token như sau : Bộ từ điển được chia làm 4 trường.

        VĂN PHẠN NGÔN NGỮ TỰ NHIÊN

        Để thấy rừ hơn cỏc kết quả từ việc biờn soạn từ điển token đến nhận dạng xin xem phần 7 “Minh họa kết quả” phần “Nhận dạng ngôn ngữ tự nhiên”.

        TÌM HIỂU WINDOWS HELP VÀ PHẦN MỀM XÂY DỰNG HỆ THỐNG HELP WINDOWS HELP DESIGNER PRO

        BMP Graphics

        Các Bước Cần Thiết Để Xây Dựng Hệ Thống Help

        Nick Ameladiotis đã đưa ra bộ công cụ WINDOWS HELP DESGINER PRO nhằm giúp cho nhà lập trình thiết kế một hệ thống help hoàn chỉnh mà không cần nhớ đến các mã điều khiển. Bộ công cụ giống như một trình soạn thảo văn bản, khi soạn thảo một Topic nào thì click vào mục Topic, đặt tên và bắt đầu soạn thảo, bộ soạn cho phép chèn vào các hình ảnh, file AVI, các ký hiệu symbol. Để biết được chi tiết hơn về bộ công cụ này xin viếng thăn trang WEB : http//www.devgr.com Chuơng trình viết trong luận văn tốt nghiệp sử dụng bộ công cụ này để tạo ra file help thực thi.

        File Hep Project của chương trình

         Thiết kế kịch bản minh họa các nét chính cho mỗi chủ đề help, các từ khóa cho mỗi chủ đề hay các từ được tham chiếu đến các chủ đề.  Nếu mỗi kịch bản có nhiều nét chính (3 hay 4) thì nên chú ý cẩn thận việc tách một chủ đề lớn thành các chủ đề nhỏ hơn. Qua phần trình bày ở trên ta nhận thấy để thiết kế một hệ thống help người lập trình cần phải nhớ rất nhiều mã để chèn vào file .RTF.

        GIỚI THIỆU KẾT QUẢ CHƯƠNG TRÌNH

        • GIỚI THIỆU HỆ THỐNG HELP 1- Màn Hình Help Contents
          • BIẾN ĐỔI VĂN PHẠM
            • GIẢI THUẬT PHÂN TÍCH CÚ PHÁP
              • NHẬN DẠNG NGÔN NGỮ TỰ NHIÊN

                Tập văn phạm mà các giải thuật sẽ làm việc có thể được nhập trực tiếp và lưu vào file, có thể lấy tập văn phạm đã lưu xuống file để sử dụng bằng cách sử dụng nút “Mở Văn Phạm”. Công cụ này cho phép người sử dụng biên soạn lại tập văn phạm được lưu từ file (hay biên soạn lại mới và lưu xuống file). Nếu câu nhập thuộc ngôn ngữ tự nhiên thì bộ công cụ sẽ in chuỗi dẫn xuất cho nó, ngược lại báo lỗi là “câu nhập không thuộc văn phạm”.