2010-03-13 27 views
22

Tôi đã đọc rằng bộ phối hợp trình phân tích cú pháp Haskell (trong Parsec) có thể phân tích ngữ pháp ngữ cảnh nhạy cảm. Điều này cũng đúng đối với các bộ phối hợp phân tích cú pháp Scala? Nếu có, đây có phải là chức năng "vào" (aka ">>") không?Làm thế nào để các bộ phối hợp phân tích cú pháp Scala so sánh với Parsec của Haskell?

Một số điểm mạnh/điểm yếu của việc triển khai bộ phối hợp phân tích cú pháp của Scala, so với Haskell là gì? Họ có chấp nhận cùng một lớp ngữ pháp không? Việc tạo các thông báo lỗi hoặc làm những thứ hữu ích khác với một hay khác có dễ dàng hơn không?

Phân tích gói tin (giới thiệu trong Scala 2.8) vừa với hình này như thế nào?

Có trang web hoặc một số tài nguyên khác thể hiện cách các nhà khai thác/chức năng/đường DSL khác nhau từ bản đồ triển khai của một ngôn ngữ sang bản đồ khác không?

Trả lời

14

Bạn có nhiều câu hỏi!

So sánh parsec (mà chỉ là một trong nhiều Haskell thư viện parser combinator) để thực hiện Scala của parsec

Không ai đã làm cho sự so sánh ở đây, vì mã Scala là khá mới, nhưng kiểm tra tài liệu:

Lưu ý rằng Haskell có nhiều thư viện trình phối hợp trình phân tích cú pháp khác, nếu bạn quan tâm đến cách tiếp cận này, ví dụ:

gì là một số điểm mạnh/điểm yếu của việc thực hiện các phân tích cú pháp combinators Scala của, vs Haskell không?

Mã Haskell đã hơn một thập kỷ, được hiểu rõ và có nhiều ví dụ, nhiều tài liệu và trường hợp người dùng. Scala của công cụ là tương đối mới.

sưu tập điện phân tích cú pháp

sưu tập điện phân tích cú pháp là khác nhau hoàn toàn. Bản gốc packrat paper được phát triển trong Haskell, nhưng từ đó trở nên phổ biến hơn.

Có trang web hoặc một số tài nguyên khác thể hiện cách các nhà khai thác/chức năng/đường DSL khác nhau từ bản đồ triển khai của một ngôn ngữ sang bản đồ khác không?

Không, nhưng điều đó sẽ thật tuyệt. Tuy nhiên, hầu như tất cả các thư viện bộ phối hợp phân tích cú pháp (?) Đều dựa trên việc triển khai parsec tiên phong, vì vậy chúng chia sẻ rất nhiều với parsec gốc.

7

Ngoài ra còn có các báo cáo kỹ thuật sau:

Parser combinators in Scala

Parser combinators là nổi tiếng bằng các ngôn ngữ lập trình chức năng như Haskell. Trong bài báo này, chúng tôi mô tả cách chúng được thực hiện như một thư viện trong Scala, một ngôn ngữ hướng đối tượng chức năng. Nhờ cú pháp linh hoạt của Scala, chúng tôi có thể gần đúng với ký hiệu EBNF được hỗ trợ bởi các trình tạo trình phân tích cú pháp chuyên dụng. Đối với những người chưa được khởi xướng, trước tiên chúng tôi giải thích khái niệm về các trình kết hợp phân tích cú pháp bằng cách phát triển một thư viện tối thiểu từ đầu. Sau đó, chúng tôi chuyển sang mô tả chi tiết về thư viện Scala hiện có, bao gồm hỗ trợ của nó để biểu thị ràng buộc biến như một phần của cú pháp. Chúng tôi cung cấp một số ví dụ thực tế để minh họa cho tiện ích của thư viện của chúng tôi.

report.pdf (324K)

+0

@Adriaan Moors: Có ấn phẩm nào đề cập đến bổ sung thư viện trình phân tích cú pháp kết hợp Scala 2.8? –

+0

Tôi không nghĩ như vậy, nhưng tôi sẽ hỏi Tiark - Tôi đã không làm việc trên các trình phân tích cú pháp kể từ 2.7. –

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