1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison

97 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Tìm hiểu về Bộ Phân Tích Cú Pháp Bison
Tác giả Hoàng Văn Phú, Nguyễn Thế Toại, Hoàng Anh Tuấn
Người hướng dẫn Hà Thị Kim Dung
Trường học Trường Đại Học Phenikaa
Chuyên ngành Công Nghệ Thông Tin
Thể loại Báo cáo chương trình dịch
Năm xuất bản 2024
Định dạng
Số trang 97
Dung lượng 1,91 MB

Cấu trúc

  • 1. Giới thiệu (6)
    • 1.1 Đặt vấn đề (0)
    • 1.2 Giới thiệu đề tài (0)
  • 2. Nội dung (9)
    • 2.1 Tìm hiểu về bộ sinh PTCP Bison (9)
      • 2.1.1 Giới thiệu về bộ phân tích cú pháp (9)
      • 2.1.2 Vai trò trong chương trình dịch (6)
      • 2.1.3 Nêu đặc điểm/ yêu cầu của bộ phân tích cú pháp (6)
      • 2.1.4 Giới thiệu bộ phân tích cú pháp Bison (25)
      • 2.1.5 Hướng dẫn cài đặt (6)
      • 2.1.6 Phân tích bộ phân tích cú pháp Bison (6)
      • 2.1.7 Xây dựng chương trình minh họa (6)
      • 2.1.8 Tổng kết vấn đề (6)
    • 2.2 Xác định cách tự động tạo biểu đồ máy tự động LALR từ ngữ pháp (67)
      • 2.2.1 Tổng quan về LALR (68)
      • 2.2.2 Tạo biểu đồ chuyển LALR với Bison (68)
      • 2.2.3 Xây dựng biểu đồ LALR vẽ tay (87)
      • 2.2.4 So sánh hai phiên bản vẽ tay và được tạo bởi Bison (93)
      • 2.2.5 Tổng kết (95)
  • 3. Kết luận (6)
    • 3.1.1 Kết quả thực hiện (96)
    • 3.1.2 Kinh nghiệm thu được sau khi hoàn thành báo cáo (96)

Nội dung

Bison là một trình sinh cú pháp LALR Look-Ahead LR mã nguồn mở, được sử dụng rộng rãi trong các dự án lớn như trình biên dịch GCC và Với khả năng xử lý cú pháp phức tạp, Bison cung cấp m

Giới thiệu

Giới thiệu đề tài

2.1 Tìm hiểu về bộ sinh PTCP Bison Để bắt đầu tìm hiểu về bộ phân tích cú pháp Bison, trước hết phải hiểu được bộ phân tích cú pháp là gì ? Tại sao các bộ phân tích cú pháp lại được sinh ra và sinh ra với mục đích phục vụ cho điều gì Vai trò của chúng trong ngành chương trình dịch hiện nay Yêu cầu cơ bản cho một bộ phân tích cú pháp để gọi là tốt trong thời đại hiện nay

2.1.1 Giới thiệu về bộ phân tích cú pháp

2.1.1.1 Lịch sử phát triển của bộ phân tích cú pháp

Sự phát triển của bộ phân tích cú pháp gần như đi liền với chương trình dịch, tức là bộ phân tích cú pháp cũng gắn liền với sựra đời của chiếc máy tính đầu tiên Trong những năm từ 1940 đến 1950, khi máy tính được ra đời với nhiều hạn chế và chỉ có những tập đoàn, cơ quan lớn mới có thể sử dụng Những nhà khoa học khi ấy đã nhận ra tiềm năng to lớn của chiếc máy tính và đã tìm hiểu cách để mà cho con người có thể giao tiếp với máy tính Đó chính là lúc mà bộ phân tích cú pháp ra đời

Trong giai đoạn đầu tiên, vào khoảng những năm 1950, trong những ngày đầu của máy tính Trình biên dịch đầu tiên được thiết kế để dịch các chương trình viết bằng Fortran sang mã máy Sự xuất hiện của Fortran là cột mốc trong ngành máy tính, vì nó cho phép người dùng viết chương trình bằng ngôn ngữ cấp cao thay vì mã máy giúp viết và duy trì các chương trình dễ dàng hơn Trong giai đoạn này, bộ phân tích cú pháp được đi cùng với các trình biên dịch

Trong giai đoạn kế tiếp, trong khoảng từ 1960 đến 1970, khi máy tính đã tiếp cận được nhiều đối tượng hơn Nhu cầu về trình biên dịch lại càng ngày càng tăng lên, nhờ đó mà các trình biên dịch mới phức tạp và hiệu quả hơn Vì vậy các bộ phân tích cú pháp mạnh mẽ cũng dần xuất hiện Các thuật toán phân tích cú pháp trong giai đoạn này chính là nền móng quan trọng trong sự phát triển của lĩnh vực xử lý ngôn ngữ tự nhiên và thiết kế trình biên dịch Chúng trở thành cơ sở lý thuyết và thực tiễn cho nhiều công nghệ ngôn ngữ sau này Có thể nói đến các thuật toán như CYK được phát minh bởi John Cocke, Daniel Younger và Tadao Kasami, thuật toán này đã trở thành một trong những thuật toán cơ bản nhất trong phân tích cú pháp Thuật toán Earley được phát minh bở Jay Earley vào năm 1968, là một thuật toán phân tích cú pháp quan trọng nhất cho ngữ pháp phi ngữ cảnh với các trường hợp ngữ pháp có tính đa nghĩa cao Hay bộ phân tích cú pháp Yacc được phát triển bởi Stephen C.Johnson xây dựng trên thuật toán LALR và trở thành công cụ phổ biến trong việc xây dựng trình biên dịch

Trong giai đoạn tiếp theo khoảng từ1980 đến 2000, một hướng lập trình mới mà đến nay vẫn cần phải học và đem đến nhiều ích lợi đó chính là lập trình hướng đối

Nội dung

Tìm hiểu về bộ sinh PTCP Bison

Để bắt đầu tìm hiểu về bộ phân tích cú pháp Bison, trước hết phải hiểu được bộ phân tích cú pháp là gì ? Tại sao các bộ phân tích cú pháp lại được sinh ra và sinh ra với mục đích phục vụ cho điều gì Vai trò của chúng trong ngành chương trình dịch hiện nay Yêu cầu cơ bản cho một bộ phân tích cú pháp để gọi là tốt trong thời đại hiện nay

2.1.1 Giới thiệu về bộ phân tích cú pháp

2.1.1.1 Lịch sử phát triển của bộ phân tích cú pháp

Sự phát triển của bộ phân tích cú pháp gần như đi liền với chương trình dịch, tức là bộ phân tích cú pháp cũng gắn liền với sựra đời của chiếc máy tính đầu tiên Trong những năm từ 1940 đến 1950, khi máy tính được ra đời với nhiều hạn chế và chỉ có những tập đoàn, cơ quan lớn mới có thể sử dụng Những nhà khoa học khi ấy đã nhận ra tiềm năng to lớn của chiếc máy tính và đã tìm hiểu cách để mà cho con người có thể giao tiếp với máy tính Đó chính là lúc mà bộ phân tích cú pháp ra đời

Trong giai đoạn đầu tiên, vào khoảng những năm 1950, trong những ngày đầu của máy tính Trình biên dịch đầu tiên được thiết kế để dịch các chương trình viết bằng Fortran sang mã máy Sự xuất hiện của Fortran là cột mốc trong ngành máy tính, vì nó cho phép người dùng viết chương trình bằng ngôn ngữ cấp cao thay vì mã máy giúp viết và duy trì các chương trình dễ dàng hơn Trong giai đoạn này, bộ phân tích cú pháp được đi cùng với các trình biên dịch

Trong giai đoạn kế tiếp, trong khoảng từ 1960 đến 1970, khi máy tính đã tiếp cận được nhiều đối tượng hơn Nhu cầu về trình biên dịch lại càng ngày càng tăng lên, nhờ đó mà các trình biên dịch mới phức tạp và hiệu quả hơn Vì vậy các bộ phân tích cú pháp mạnh mẽ cũng dần xuất hiện Các thuật toán phân tích cú pháp trong giai đoạn này chính là nền móng quan trọng trong sự phát triển của lĩnh vực xử lý ngôn ngữ tự nhiên và thiết kế trình biên dịch Chúng trở thành cơ sở lý thuyết và thực tiễn cho nhiều công nghệ ngôn ngữ sau này Có thể nói đến các thuật toán như CYK được phát minh bởi John Cocke, Daniel Younger và Tadao Kasami, thuật toán này đã trở thành một trong những thuật toán cơ bản nhất trong phân tích cú pháp Thuật toán Earley được phát minh bở Jay Earley vào năm 1968, là một thuật toán phân tích cú pháp quan trọng nhất cho ngữ pháp phi ngữ cảnh với các trường hợp ngữ pháp có tính đa nghĩa cao Hay bộ phân tích cú pháp Yacc được phát triển bởi Stephen C.Johnson xây dựng trên thuật toán LALR và trở thành công cụ phổ biến trong việc xây dựng trình biên dịch

Trong giai đoạn tiếp theo khoảng từ1980 đến 2000, một hướng lập trình mới mà đến nay vẫn cần phải học và đem đến nhiều ích lợi đó chính là lập trình hướng đối tượng OOP mà ngôn ngữ lập trình tiêu biểu đó chính là Java và C/ C++ Việc xuất hiện mô hình lập trình này đã đem đến những thay đổi đáng kể trong thiết kế trình biên dịch Mà trong đó các trình biên dịch đi cùng bộ phân tích cú pháp bao gồm trình biên dịch C sử dụng bộ phân tích ANTLR hoặc Bison Trình biên dịch Java sử dụng bộ phân tích JavaCup để tạo bộ phân tích cú pháp LALR cho Java

Trong giai đoạn từ 2000 đến hiện nay, các trình biên dịch vẫn tiếp tục được cải thiện và nhờ đó, các bộ phân tích cú pháp lại tiếp tục được phát triển và cải thiện nhằm tối ưu cho các trình biên dịch

2.1.1.2 Hoạt động của một bộ Phân tích cú pháp

Về cơ bản, các bộ phân tích cú pháp đều có chung về cách hoạt động, nếu đi sâu vào chi tiết hơn sẽ thấy sự khác biệt trong việc phân tích (về thuật toán) Dưới đây là những điểm chung về cách hoạt động và cấu trúc trong các bộ phân tích cú pháp:

Thứ nhất, tách từ (Tokenization) Quá trình này bắt đầu bằng việc chia chuỗi ký tự đầu vào thành các phần tử cơ bản, gọi là "token" Tách từ thường bao gồm việc loại bỏ các ký tự không mong muốn như dấu cách, tab, và dấu xuống dòng, cũng như phân biệt giữa các từ vựng, dấu câu, và các thành phần khác trong ngôn ngữ Các token tạo ra từ quá trình này sẽ là đầu vào cho bước tiếp theo của quá trình phân tích cú pháp

Thứ hai, phân tích cú pháp, Trong bước này, bộ phân tích cú pháp sử dụng các quy tắc ngữ pháp đã được định nghĩa trước để phân tích cú pháp của các token Bộ phân tích kiểm tra xem các token có tuân theo cú pháp của ngôn ngữ không và xác định cấu trúc ngữ pháp của chuỗi ký tự dựa trên các quy tắc này Nếu chuỗi ký tự không tuân theo bất kỳ quy tắc nào, bộ phân tích sẽ phát hiện và báo cáo lỗi cú pháp

Thứ ba, xây dựng cấu trúc dữ liệu Sau khi phân tích cú pháp hoàn tất, bộ phân tích tạo ra một biểu diễn cấu trúc dữ liệu cho cấu trúc ngữ pháp của mã nguồn Cây cú pháp (AST) là một biểu diễn phổ biến, trong đó mỗi nút trong cây đại diện cho một phần của cấu trúc ngữ pháp, và mỗi cặp nút cha-con đại diện cho mối quan hệ giữa các thành phần của ngôn ngữ

Thứ tư, các bộ phân tích đều có quy tắc ngữ pháp Các bộ phân tích cú pháp đều sử dụng một tập hợp các quy tắc ngữ pháp được định nghĩa trước để phân tích cú pháp của chuỗi ký tự đầu vào Quy tắc ngữ pháp này thường được biểu diễn dưới dạng ngữ pháp hình thức hoặc ngữ pháp miền phẳng, và xác định cấu trúc ngữ pháp của ngôn ngữ

Thứ năm, về khả năng xác định cấu trúc ngữ pháp Một điểm chung khác là bộ phân tích cú pháp xác định cấu trúc ngữ pháp của chuỗi ký tự đầu vào, giúp hiểu cách các thành phần trong ngôn ngữ được tổ chức và tương tác với nhau Cấu trúc ngữ pháp này thường được biểu diễn bằng cách sử dụng các biểu diễn dữ liệu như cây cú pháp (AST), giúp cho việc xử lý và phân tích tiếp theo trở nên dễ dàng hơn

Thứ sáu, khả năng phát hiện và báo cáo lỗi: Nếu có lỗi cú pháp trong chuỗi ký tự đầu vào, các bộ phân tích cú pháp đều có khả năng phát hiện và báo cáo lỗi Thông báo lỗi cú pháp giúp cho người lập trình có thể sửa chữa các lỗi và cải thiện chất lượng của mã nguồn

2.1.1.3 Tác động của bộ phân tích cú pháp đến việc biên dịch

Tác động của bộ phân tích cú pháp đến quá trình biên dịch trong ngành phần mềm là không thể phủ nhận Dưới đây là một số điểm chi tiết về tác động này:

Thứ nhất, xác định cấu trúc cú pháp: Bộ phân tích cú pháp giúp xác định cấu trúc ngữ pháp của mã nguồn Bằng cách phân tích các đoạn mã, nó xác định các thành phần như biến, hàm, câu lệnh và cấu trúc điều khiển Điều này quan trọng để biên dịch có thể hiểu và xử lý mã đúng cách

Ngày đăng: 24/07/2024, 16:05

HÌNH ẢNH LIÊN QUAN

Hình 1:Hình ảnh nhận diện của Bison - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 1 Hình ảnh nhận diện của Bison (Trang 8)
Hình 2:Cây cú pháp biểu diễn cấu trúc toán học  Kiểm Tra Lỗi: - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 2 Cây cú pháp biểu diễn cấu trúc toán học Kiểm Tra Lỗi: (Trang 16)
Hình 4: Bên trong thư mục bin - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 4 Bên trong thư mục bin (Trang 31)
Hình 5:Tìm ki ế m v ớ i t ừ  khóa - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 5 Tìm ki ế m v ớ i t ừ khóa (Trang 31)
Hình 6:Nhấn chọn Environment Variables - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 6 Nhấn chọn Environment Variables (Trang 32)
Hình 7: Lựa chọn Path tại user variables - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 7 Lựa chọn Path tại user variables (Trang 33)
Hình 8: Thêm biến môi trường mới trong giao diện này. - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 8 Thêm biến môi trường mới trong giao diện này (Trang 34)
Hình 9: Ứ ng d ụng đượ c cài thành công. - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 9 Ứ ng d ụng đượ c cài thành công (Trang 35)
Hình 11: Chạy lệnh bison -d -t .\parser.y để tạo ra hai file parser.tab.c và parser.tab.h - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 11 Chạy lệnh bison -d -t .\parser.y để tạo ra hai file parser.tab.c và parser.tab.h (Trang 53)
Hình 13:Mã phân tích từ vựng - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 13 Mã phân tích từ vựng (Trang 55)
Hình 15: HÌnh ảnh output của file lex.yy.c - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 15 HÌnh ảnh output của file lex.yy.c (Trang 58)
Hình 19: Ouput sau câu l ệ nh bison -d .\parser.y - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 19 Ouput sau câu l ệ nh bison -d .\parser.y (Trang 64)
Hình 20: Hình  ả nh cho file parser.tab.h - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 20 Hình ả nh cho file parser.tab.h (Trang 64)
Hình 28:Giao diện tải xuống của trang web. - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 28 Giao diện tải xuống của trang web (Trang 69)
Hình 29:Giao diện ban đầu của Graphviz setup. - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 29 Giao diện ban đầu của Graphviz setup (Trang 70)
Hình 30: Giao diện điều khoản người dùng. - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 30 Giao diện điều khoản người dùng (Trang 71)
Hình 31: Giao diện Install option - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 31 Giao diện Install option (Trang 71)
Hình 32:Giao diện chọn vị trí cài đặt - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 32 Giao diện chọn vị trí cài đặt (Trang 72)
Hình 33:Ví d ụ đườ ng d ẫn đế n folder bin. - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 33 Ví d ụ đườ ng d ẫn đế n folder bin (Trang 72)
Hình 34:Lựa chọn nút bấm Enviroment Variables - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 34 Lựa chọn nút bấm Enviroment Variables (Trang 73)
Hình 35:Thêm bi ến môi trườ ng  ở  c ả  hai ph ần, cách làm tương tự  nhau. - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 35 Thêm bi ến môi trườ ng ở c ả hai ph ần, cách làm tương tự nhau (Trang 74)
Hình 36: Hiển thị cho thấy ứng dụng được cài đặt thành công. - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 36 Hiển thị cho thấy ứng dụng được cài đặt thành công (Trang 75)
Đồ thị cú pháp của bạn. - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
th ị cú pháp của bạn (Trang 81)
Bảng trên là tập hợp các I trong tập hợp C, trong bảng là kết quả sau cuối, thực - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Bảng tr ên là tập hợp các I trong tập hợp C, trong bảng là kết quả sau cuối, thực (Trang 89)
Hình 38:Thu ậ t toán xây d ự ng LR(1) - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
Hình 38 Thu ậ t toán xây d ự ng LR(1) (Trang 90)
Đồ thị được đánh số trạng thái  theo thuật toán người vẽ được  Thông  tin  bổ  học - báo cáo chương trình dịch tìm hiểu về bộ phân tích cú pháp bison
th ị được đánh số trạng thái theo thuật toán người vẽ được Thông tin bổ học (Trang 94)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w