2012-08-29 9 views
8

Tôi đang chơi xung quanh với parsec và nhận ra rằng tôi đã có một ngữ pháp mơ hồ. Rõ ràng đó là một lỗi trên một phần của tôi, nhưng tôi là loại được sử dụng để máy phát điện phân tích cú pháp phong cách cho tôi biết tôi đang câm. Parsec chỉ ăn các ký tự theo thứ tự bạn cung cấp cho nó các trình phân tích cú pháp (vâng, tôi biết về try).Có cách nào để làm cho báo cáo phân tích cú pháp "thay đổi-giảm" xung đột?

Có cách nào để làm cho parsec cho tôi biết khi ngữ pháp của tôi không bị thừa nhận không? Các chương trình làm việc cho tôi rất tuyệt.

Cảm ơn!

(Tôi biết rằng shift-giảm đã làm với một loại khác nhau của công nghệ phân tích cú pháp. Tôi chỉ đơn giản có nghĩa là để mô tả văn phạm mơ hồ.)

Trả lời

8

Tôi không phải là một chuyên gia Parsec, vì vậy tôi có thể được sửa chữa nhưng tôi không nghĩ điều này là có thể, vì lý do đơn giản là Parsec không biết gì về ngữ pháp của bạn. Hoặc đặt một cách khác, trong khi ngữ pháp của bạn có thể mơ hồ, trình phân tích cú pháp Parsec của bạn không có, và chương trình không có cách nào xác định rằng một số sắp xếp khác của bộ phối hợp phân tích cú pháp tạo ra đầu ra khác cho đầu vào tương đương, đại diện hợp lệ của một ngữ pháp không xác định.

Vì bạn có ngữ pháp, bạn có thể thích sử dụng happyalex, điều này sẽ mang lại cho bạn trải nghiệm giống như lexx/yacc.

Một dự án thú vị có thể là điều chỉnh BNFC để tạo ra AST của các bộ phối hợp phân tích cú pháp để đại diện cho ngữ pháp, nhưng tôi nghi ngờ đây sẽ là một nhiệm vụ không tầm thường.