Công cụ rút gọn (1) là gì?


14

Tôi cố gắng dạy bản thân cách sử dụng bò rừng. Bison manpage (1) nói về bò rừng:

Tạo một trình phân tích cú pháp LR hoặc GL (GLR) xác định sử dụng các bảng phân tích cú pháp LALR (1), ClassifiedR (1) hoặc canonical (1).

Trình phân tích mã hóa là gì? Tất cả các bài viết có liên quan tôi tìm thấy trên web trên toàn thế giới đều được trả tiền.



@reinierpost Tôi cảm thấy thật ngu ngốc ngay bây giờ. Tại sao tôi không tìm thấy cái này?
FUZxxl

Tôi không biết - Google thực hiện cá nhân hóa kết quả ...
rebierpost

@reinierpost, bạn có muốn trả lời câu hỏi này bằng cách trích dẫn liên kết của bạn, để làm sạch câu hỏi này không?
Merbs

Hmmm ... nếu đó là tất cả, OK.
Revierpost

Câu trả lời:


3

Thuật toán phân tích mã hóa chương trình ClassifiedR (1)

Các IELR thuật toán (1) phân tích cú pháp đã được phát triển vào năm 2008 bởi Joel E. Denny như một phần của tiến sĩ nghiên cứu dưới sự giám sát của Brian A. Malloy tại Đại học Clemson. Thuật toán ClassifiedR (1) là một biến thể của thuật toán gọi là "tối thiểu" LR (1) được phát triển bởi David Pager vào năm 1977 , bản thân nó là một biến thể của thuật toán phân tích cú pháp LR (k) được phát minh bởi Donald Knuth vào năm 1965 . IE trong ClassifiedR (1) là viết tắt của loại bỏ bất cập (xem phần cuối).

Thuật toán LR (1)

Phần LR (1) của ClassifiedR (1) là viết tắt của L eft sang phải, R dẫn xuất cực đại với 1 mã thông báo nhìn. Trình phân tích cú pháp LR (1) cũng được gọi là trình phân tích cú pháp chính tắc. Lớp thuật toán phân tích cú pháp này sử dụng chiến lược phân tích cú pháp từ dưới lên, giảm ca với một ngăn xếp và bảng chuyển trạng thái xác định hành động tiếp theo sẽ thực hiện trong quá trình phân tích cú pháp.

Trong lịch sử, các thuật toán LR (1) đã bị bất lợi bởi các yêu cầu bộ nhớ lớn cho các bảng chuyển tiếp của chúng. Cải tiến của Pager là phát triển phương pháp kết hợp các trạng thái chuyển tiếp khi bảng chuyển tiếp được tạo, giảm đáng kể kích thước của bảng. Do đó, thuật toán của Pager làm cho trình phân tích cú pháp LR (1) cạnh tranh với các chiến lược phân tích cú pháp khác liên quan đến hiệu quả không gian và thời gian. Cụm từ "trình phân tích cú pháp tối thiểu LR (1)" dùng để chỉ kích thước tối thiểu của bảng chuyển đổi được giới thiệu bởi thuật toán của Pager.

Hạn chế của thuật toán của Pager

Các thuật toán tối thiểu LR (1) tạo ra bảng chuyển đổi dựa trên một ngữ pháp đầu vào cụ thể cho ngôn ngữ được phân tích cú pháp. Các ngữ pháp khác nhau có thể tạo ra cùng một ngôn ngữ. Thật vậy, một ngữ pháp không phải là LR (1) có thể tạo ra một ngôn ngữ có thể phân tích cú pháp LR (1). Trong thực tế, các trình tạo bộ phân tích cú pháp LR (1) chấp nhận các ngữ pháp không phải là LR (1) với một đặc điểm kỹ thuật để giải quyết xung đột giữa hai lần chuyển trạng thái có thể ("xung đột giảm ca") để phù hợp với thực tế này. Denny và Malloy nhận thấy rằng thuật toán của Pager không tạo ra các trình phân tích cú pháp đủ mạnh để phân tích các ngôn ngữ LR (1) khi được cung cấp một số ngữ pháp không phải là LR (1) mặc dù ngữ pháp không phải là LR (1) tạo ra ngôn ngữ LR (1).

Denny và Malloy cho thấy giới hạn này không chỉ đơn thuần là học thuật bằng cách chứng minh rằng Gawk và Gpic, cả hai phần mềm trưởng thành, được sử dụng rộng rãi, thực hiện các hành động phân tích cú pháp không chính xác.

Những cải tiến của ClassifiedR (1)

Denny và Malloy đã nghiên cứu nguồn gốc của sự thiếu sót của thuật toán của Pag bằng cách so sánh bảng chuyển đổi được tạo bởi thuật toán của Pager với bảng chuyển đổi của một ngữ pháp LR (1) tương đương và xác định hai nguồn của những gì họ gọi là bất cập xuất hiện trong bảng chuyển đổi từ Bảng chuyển đổi thuật toán nhưng không có trong bảng chuyển tiếp LR (1). Thuật toán ClassifiedR (1) (Inadequacy Elimination LR (1)) của Denny và Malloy là một thuật toán được thiết kế để loại bỏ những bất cập này khi tạo bảng chuyển đổi có kích thước gần giống với thuật toán của Pager.


6

Một bài báo tuyên bố giới thiệu về nó: ClassifiedR (1): Các bảng phân tích cú pháp thực hành LR (1) cho các ngữ pháp không phải là LR (1) với giải quyết xung đột của Joel E. Denny và Brian A. Malloy, Đại học Clemson, được cung cấp miễn phí từ Malloy's Địa điểm.

Những gì họ có giá trị là những gì tôi không thể trả lời. (Cá nhân tôi không hiểu sự cần thiết phải phân tích cú pháp CFG bị tê liệt như vậy - tại sao lại hạn chế khả năng biểu cảm của bạn khi bạn chỉ có thể sử dụng GLR ? Điều gì có ý nghĩa với tôi là một cái gì đó như TAG hoặc PEG (chúng có vẻ tự nhiên và thêm sức mạnh biểu cảm) hoặc cây ngữ pháp (đối với các ngôn ngữ như XML, trong đó nhận dạng cây phân tích là không hiệu quả theo thiết kế.)


Mặc dù tôi đồng ý về nguyên tắc liên quan đến công nghệ, vấn đề thường là phân tích cú pháp xác định truyền thống có triển khai tốt hơn, đầy đủ hơn. Một vấn đề khác là phân tích cú pháp CF chung mạnh hơn, nhưng GLR có thể không phải là phiên bản tốt nhất của nó.
babou

4
Lý do chính cho lý do tại sao mọi người đã phát triển trình phân tích cú pháp CFG bị lẫn lộn là vì trình phân tích cú pháp GLR không nhất thiết phải chạy trong thời gian tuyến tính Đây là một vấn đề lớn đối với nhiều ứng dụng. Một trình phân tích cú pháp ClassifiedR có thể đảm bảo thời gian chạy tuyến tính và hơn thế nữa.
FUZxxl

Tôi không hiểu tại sao nó sẽ là một vấn đề.
Revierpost

2
Ôi(n4)Ôi(n3)tôiTôimxÔi(nx). Con người không sống mãi mãi và có rất nhiều việc phải làm. Lãng phí thời gian của họ nói chung là xấu.
người dùng

3
Tôi muốn lưu ý rằng "Cá nhân tôi không hiểu nhu cầu phân tích CFG bị tê liệt như vậy - tại sao lại hạn chế khả năng biểu cảm của bạn khi bạn chỉ có thể sử dụng GLR?" là khá sai lầm trong bối cảnh này. ClassifiedR (1) được sử dụng để tạo các bảng phân tích cú pháp LR (1) hiệu quả hơn , cho phép các trình phân tích cú pháp GLR hiệu quả hơn .
orlp
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.