2012-01-25 29 views
10

Trên web, có rất nhiều ví dụ cho thấy cách xây dựng các bảng phân tích cú pháp ngữ pháp miễn phí từ các bộ đầu tiên/tiếp theo cho bộ phân tích cú pháp LL (1).Làm cách nào để xây dựng bảng phân tích cú pháp cho LL (k> 1)?

Nhưng tôi không tìm thấy bất kỳ điều gì hữu ích liên quan đến k> 1 trường hợp. Ngay cả wikipedia cũng không đưa ra thông tin về điều này.

Tôi hy vọng rằng nó phải theo một cách nào đó tương tự, nhưng gợi ý cho nghiên cứu hiện tại trong lĩnh vực này sẽ rất hữu ích.

+0

Tôi có một bản sao của một cuốn sách tuyệt vời về phân tích cú pháp, thật không may, bỏ qua chủ đề này. Tôi cũng tò mò như bạn. Từ sự hiểu biết của tôi, mặc dù, các thuật toán cho k> 1 là đáng kể hơn tham gia và hoàn toàn không khả thi trong thực tế. Tôi đoán chúng ta sẽ tìm ra! – templatetypedef

+2

Tôi không nghĩ rằng nó không khả thi. Ít nhất là tuyên bố ANTLR để phân tích cú pháp LL (K) (với bất kỳ ngữ pháp K) nào. –

+0

Với trình phân tích cú pháp gốc đệ quy của nó dễ dàng, bạn chỉ cần duy trì một danh sách nhìn aheads. Sau đó, có rất nhiều tối ưu hóa để cải thiện về điều này, chẳng hạn như ghi nhớ và theo dõi lại. Bạn không chắc chắn làm thế nào nó sẽ làm việc cho một trình phân tích cú pháp định hướng bảng mặc dù! Bạn đã đoán ra chưa? –

Trả lời

1

Tôi đấu tranh khá nhiều với cùng một vấn đề, xây dựng trình phân tích cú pháp LR, chứ không phải LL. Tôi tìm thấy trang tốt hơn một chút so với LL (k) được đề cập bởi @cakeplus - http://www.seanerikoconnor.freeservers.com/ComputerScience/Compiler/ParserGeneratorAndParser/QuickReviewOfLRandLALRParsingTheory.html Ngoài ra còn có giấy liên quan có sẵn miễn phí - http://ci.nii.ac.jp/naid/110002673618/

Tuy nhiên ngay cả những thứ đó cũng không giúp được gì nhiều. Vì vậy, tôi bắt đầu từ những điều cơ bản. Nếu có ai quan tâm: https://aboutskila.wordpress.com/2013/06/14/lalrk-first-sets/ và trận chiến sẽ tiếp tục :-)

+1

Liên kết đã chết. :( – paulotorrens

+1

@paulotorrens, cố định cuối cùng, cảm ơn bạn – greenoldman

+0

Tôi ước mình có thể tìm được thuật toán để tính toán chúng. Tôi có thể sẽ đảo ngược kỹ sư [this] (http://www.fit.vutbr.cz/~ikocman/ llkptg /) – paulotorrens

Các vấn đề liên quan