2016-11-11 43 views
9

Gần đây tôi đã quyết định xem xét Perl, và khi phải đối mặt với Perl 5 vs 6, tôi đã đi với 5 do sự trưởng thành của nó và hỗ trợ rộng lớn.Làm cách nào để xác định ngữ pháp phân tích cú pháp trong Perl 5?

Tuy nhiên, một trong các tính năng của Perl 6 thực sự hấp dẫn tôi là grammar keyword, cho phép một định nghĩa ngữ pháp ngôn ngữ có thể được sử dụng để phân tích cú pháp văn bản phức tạp. Trong các ngôn ngữ khác hoặc là một thư viện bên ngoài hoặc thực hiện phân tích thủ công thường là cần thiết cho việc này.

Bây giờ tôi đã giải quyết trên Perl 5, có bất kỳ tương đương thô với Perl 6's grammar từ khóa trong Perl 5 (hoặc chức năng khác để xây dựng ngữ pháp), được xây dựng trong hay không?

+0

https://metacpan.org/pod/Regexp::Grammars là một trong các mô-đun CPAN hoạt động tương tự. Có một số câu trả lời ở đây về SO của tác giả, Damian Conway, sử dụng nó rộng rãi. Nhưng tiếc là câu hỏi của bạn là không có chủ đề bởi vì bạn đang yêu cầu đề xuất công cụ. – simbabque

+1

@simbabque Bạn có thể tua lại câu hỏi một chút để làm cho nó thành chủ đề: "Làm thế nào tôi có thể xác định ngữ pháp để phân tích cú pháp văn bản trong Perl 5?" – ThisSuitIsBlackNot

+0

Tôi biết. Nhưng tôi đã thấy OP đủ kinh nghiệm để tự làm điều đó @ThisSuitIsBlackNot;) – simbabque

Trả lời

10

Không có hỗ trợ cốt lõi, nhưng bạn có thể có một cái nhìn tại Parse::RecDescent, Marpa::R2, Regexp::Grammars, hoặc cho các nhiệm vụ đơn giản hơn, chỉ cần sử dụng (DEFINE) trong một regex (xem perlre).

+0

Tất cả chúng đều giống như các mô-đun tốt, đặc biệt là «Regexp :: Grammars'. Bạn có thể giải thích một chút về '(DEFINE) 'mặc dù xin vui lòng? Các tài liệu * perlre * cho nó có vẻ hơi khó hiểu cho người mới bắt đầu. –

+0

@ OrangeFlash81: Xem [trình phân tích cú pháp JSON dưới dạng một Perl Regex] (http://www.perlmonks.org/?node_id=995856) để biết ví dụ. – choroba

+0

Tuyệt vời, cảm ơn. Tôi sẽ chấp nhận trong 3 phút. –

1

Mặc dù tôi không sử dụng nó nhiều, nhưng tôi tin rằng phần mềm Acmeist Pegex gần với Perl 6 Grammars.

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