2009-02-14 17 views
6

Có ai biết về một trình phân tích cú pháp có thể lấy văn bản được định dạng Wiki làm đầu vào và tạo ra một cây các thực thể, giống như cách một trình phân tích cú pháp XML tạo ra một cây thực thể không? Để làm rõ, tôi đang tìm một nội dung có nội dung như sau:Trình phân tích cú pháp Wiki nào?

-Intro- 
Textual stuff in ''italics'' 
--Subhead-- 
Yet more text 

và tạo ra một gốc cây ở Intro với ba nút con, một trong số đó (chính Đầu đề) có con. Tôi đang tìm một cái gì đó có thể hiểu được định dạng wiki "đơn giản" được mô tả tại http://meta.wikimedia.org/wiki/Help:Wikitext.

Tôi biết một số từ vựng cho văn bản Wiki, nhưng không có trình phân tích cú pháp cây. Tôi đang tìm một cái gì đó mã nguồn mở và được viết bằng C hoặc C++.

Trả lời

2

Bạn không thể thực hiện trực tiếp từ trang được định dạng wiki vì định dạng wiki không có thông tin đầy đủ. Thay vào đó, văn bản định dạng wiki được dịch cơ bản bằng một loạt các quy tắc biểu thức chính quy và được chèn vào một khung trang được xác định trước trong HTML hoặc XHTML. Cách dễ nhất để làm những gì bạn muốn là tìm một trình định dạng phù hợp cho một số định dạng văn bản nhẹ (như dệt hoặc creole), chuyển qua đó để tạo XHTML, và sau đó phân tích cú pháp XHTML bằng cách sử dụng bất kỳ trình phân tích cú pháp thông thường nào.

2

gì tôi sẽ làm là

  1. Viết cú pháp BNF cho rằng ngôn ngữ wiki. Vì nó đơn giản, BNF cũng sẽ đơn giản.
  2. Sử dụng The Spirit Framework để tạo trình phân tích cú pháp cho nó. Nó thực sự đơn giản (cho những điều đơn giản đó), và cú pháp BNF được dịch sang C++ một cách tự nhiên.
2

Tôi đã viết một phân tích cú pháp, mà trong nội bộ tạo ra như một cái cây trong Java: Java Wikipedia API

lẽ bạn có thể nhận được một số ý tưởng cho C hoặc C++ thực hiện?

Các HTMLConverter class mất cây nút bên trong để chuyển đổi nó thành đánh dấu HTML.

2

Bạn có thể muốn xem Mylyn WikiText, là trình phân tích cú pháp sử dụng mẫu thiết kế Builder để chuyển đổi đánh dấu wiki thành các định dạng XML khác nhau. Nó kết hợp với các trình xây dựng cho HTML, Eclipse Help, DITA và DocBook. Bạn có thể sử dụng trình tạo của riêng bạn để tùy chỉnh đầu ra.

Trình phân tích cú pháp có thể xử lý đánh dấu Dệt, MediaWiki, TracWiki, TWiki và Confluence. Nó có thể mở rộng để bạn có thể thêm các ngôn ngữ mới nếu muốn.

Các THƯ VIỆN là Java

0

Wiki Parser thực hiện chính xác những gì bạn cần: nó dịch cú pháp truyền thông wiki to XML thông thường. Nó bảo tồn khá nhiều cấu trúc trang và xử lý các mẫu, thư viện ảnh, chuyển hướng và hơn thế nữa.

Đó cũng là đơn đặt hàng có cường độ nhanh hơn các trình phân tích cú pháp khác, mất khoảng 2-3 giờ để phân tích tất cả 55 GB của Wikipedia tiếng Anh hiện tại.