Sách hay về lý thuyết phân tích cú pháp?


9

Một trong những dự án Java của tôi là một nhánh của parboiled và không giống như Antlr hoặc JavaCC, các trình phân tích cú pháp được tạo khi chạy. Các ngữ pháp được tạo ra là các ngữ pháp phân tích cú pháp hoặc PEG (tôi nghe một thuật ngữ khác cho chúng là "packrat").

Trong khi thế hệ thời gian chạy thêm sự phức tạp (liên quan đến việc tạo mã byte), một khía cạnh khác liên quan đến chính lý thuyết trình phân tích cú pháp. Thật không may, như tôi không có nền tảng vững chắc về khoa học máy tính, tôi thiếu kiến ​​thức lý thuyết để ánh xạ mã hiện có đến các khái niệm hiện có - trong trường hợp này là các trình phân tích cú pháp.

Có một cuốn sách tham khảo tốt về các trình phân tích cú pháp mà tôi có thể mua và đọc, hoặc thậm chí các liên kết trên Internet, có thể giúp tôi xây dựng một "bản đồ" như vậy, chiếm kiến ​​thức lý thuyết kém của tôi không?

Câu trả lời:



3

Nếu bạn muốn tìm hiểu về lý thuyết của trình phân tích cú pháp, tôi khuyên bạn nên tập 1 của cuốn sách kinh điển này:

À, Alfred V.; Ullman, Jeffrey D., Lý thuyết về phân tích cú pháp, dịch thuật và biên dịch , Prentice-Hall (1972).


Đây là một cuốn bách khoa toàn thư về chủ đề tại thời điểm xuất bản. Nhưng đã có công việc nghiên cứu được thực hiện kể từ đó.
babou

1

Nếu bạn không quan tâm đến sự khác biệt về ngôn ngữ, Chương 8 của Perl bậc cao là tất cả về phân tích cú pháp, và đặc biệt xây dựng một trình phân tích cú pháp gốc đệ quy bằng cách sử dụng các trình kết hợp trình phân tích cú pháp. Nó có thể truy cập (nếu bạn không sợ Perl) và có thể đọc miễn phí nếu bạn thích. Nó đã giúp khơi dậy sự quan tâm của tôi đối với các kỹ thuật phân tích cú pháp một số năm trước.


0

Mặc dù Kỹ thuật phân tích cú pháp là một cuốn sách tuyệt vời và tôi đã đọc một số phần một vài lần, nó tập trung vào phân tích cú pháp LR sẽ không thú vị đối với bạn. Trong trường hợp cụ thể của bạn, bạn đang xem PEG là loại phân tích cú pháp gốc đệ quy từ trên xuống với quay lui dựa trên thứ tự thay thế.

Tôi muốn đề nghị bạn xem xét các tổ hợp trình phân tích cú pháp, sử dụng cùng một chiến lược. Ví dụ, bạn có thể kiểm tra bài viết này http://research.microsoft.com/pub/65201/parsec-apers-letter.pdf sử dụng Haskell để xây dựng các trình kết hợp trình phân tích cú pháp. Kiểm tra phần với try nơi họ kết hợp quay lui (Phần 3.4).

Trong mọi trường hợp, điều bạn cần học là:

  • phân tích cú pháp gốc đệ quy và ngữ pháp LL
  • cái nhìn cố định so với cái nhìn vô hạn (được thực hiện thông qua quay lui)
  • chiến lược quay lui
  • làm thế nào để đối phó với các quy tắc đệ quy trái
  • Ghi nhớ kết quả một phần để tránh hành vi theo cấp số nhân
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.