2008-11-27 28 views
6

Tôi quan tâm đến việc chọn lọc phân tích cú pháp XML Mediawiki để tạo trang HTML tùy chỉnh là một số tập con của HTML được tạo bởi công cụ hiển thị PHP Mediawiki thực tế.Mã phân tích cú pháp nguồn mở cho đánh dấu Mediawiki

Tôi muốn nó cho BzReader, một trình đọc kết xuất nén Mediawiki được viết bằng C#. Vì vậy, một trình phân tích cú pháp C# sẽ là lý tưởng, nhưng bất kỳ mã nào tốt sẽ giúp ích. Tất nhiên, nếu chưa có ai thực hiện nó trước đây, tôi đoán đã đến lúc bắt đầu một dự án duy trì một trình phân tích cú pháp Mediawiki miễn phí và riêng biệt, dựa trên trình phân tích cú pháp của Mediawiki, nhưng ít tích hợp với Mediawiki hơn.

Vì vậy, có ai biết về bất kỳ cơ sở nào tôi có thể bắt đầu, điều đó sẽ tốt hơn là hack từ mã PHP Mediawiki không?

Trả lời

7

Có một danh sách các phân tích cú pháp trên http://www.mediawiki.org/wiki/Alternative_parsers, nhưng một C# phân tích cú pháp không được bao gồm có ...

+0

Để tích hợp .net, bạn có thể sử dụng python sắt mặc dù. –

+0

Tôi đã từ bỏ sau một vài giờ cố gắng sử dụng python sắt với những thư viện python. Quá phức tạp ... – jjxtra

+0

Danh sách này cũ và không được cập nhật. – ALOToverflow

4

tôi đã có một số lời muốn nói về Mediawiki mẫu here. Thú vị là có một danh sách các trình phân tích cú pháp thay thế ngay bây giờ, tôi sẽ phải điều tra điều đó.

6

Cập nhật
Bare in mind Screwturn không dính vào cú pháp Mediawiki nhưng sử dụng biến thể của riêng nó thay đổi một chút.

Cú pháp Mediawiki không cho chính nó vào trình phân tích cú pháp LALR (hoặc thậm chí LL *) vì nó có rất nhiều sự mơ hồ trong định nghĩa của nó và cũng cho phép HTML. Có một cuộc thảo luận về điều đó in this question, về cơ bản bạn đang mắc kẹt bằng cách viết trình phân tích cú pháp của riêng bạn và trình thông báo thay vì chỉ viết một tệp BNF cho nó và sau đó sử dụng ANTLR/Gold/Irony.

Roadkill Wiki sử dụng số Creole parser để phân tích cú pháp Mediawiki nhưng có hỗ trợ giới hạn.


ScrewTurn được phát hành theo giấy phép GPL, và có một C# phân tích cú pháp:

Các lớp học mà bạn đang theo đuổi là Core.Formatter có rất nhiều regex để thực hiện công việc của mình:

public static class Formatter { 

} 

Đó không phải là mã tìm kiếm đẹp nhất "nhưng nó hoạt động".

+0

Cảm ơn! Tài nguyên tuyệt vời. –

+0

@ Chris S: Nói cách khác: đây không phải là trình phân tích cú pháp mediawiki ... –

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