2012-03-05 13 views
9

Đầu vào là một trong hai:Render cây cú pháp ngôn ngữ trong trình duyệt

(1) một đại diện trong ngoặc vuông của một cái cây với nhãn nút nội bộ như:

(S (N John) (VP (V hit) (NP (D the) (N ball)))) 

với sản lượng:

enter image description here

(Các dòng có bị gạch ngang hay không và phụ đề có hiện diện không đáng kể không.)

Hoặc đầu vào có thể là:

(2) một bracketing chữ không có nhãn ví dụ:

((John) ((hit) ((the) (ball)))) 

với sản lượng tương tự như trên (không có nhãn nội bộ thời gian này, chỉ cần cơ cấu cây).

Một thành phần khác của đầu vào là liệu cây có được gắn nhãn là (1) hoặc không được gắn nhãn như trong (2).


Câu hỏi của tôi: cách tốt nhất (thời gian phát triển nhanh nhất) để làm cho những cây trong trình duyệt trong javascript là gì? Mọi thứ sẽ xảy ra ở phía khách hàng.

Tôi đang tưởng tượng một giao diện đơn giản chỉ với một hộp văn bản (và nút radio chỉ định liệu cây đó có được gán nhãn hay không), khi thay đổi, kích hoạt một cây để hiển thị (nếu đầu vào không có bất kỳ cú pháp nào lỗi).

Trả lời

4

Thực tế có thư viện phía máy chủ để chuyển đổi biểu diễn được đóng khung thành cây, phpsyntaxtree.
Bạn có thể triển khai lại chúng bằng cách sử dụng thư viện đồ họa javascript như jsdraw2d hoặc cuộn bạn trên javascript bằng canvas HTML5.

10 Best Javascript Drawing and Canvas Libraries

+0

Cảm ơn, đó là một liên kết tuyệt vời! Đó là một sự thay thế gần như hoàn hảo cho những gì tôi muốn. Tôi chỉ muốn nó cũng chấp nhận đầu vào với dấu ngoặc đơn thay vì chỉ dấu ngoặc vuông. – dsg

9

Tôi không chắc chính sách là gì cho tự cắm trên lưu lượng truy cập. Tôi xin lỗi nếu điều này vi phạm các quy tắc.

Bạn đã xem giải pháp của mình cho điều này chưa? mshang.ca/syntree

Nó không chính xác những gì bạn muốn, nhưng bạn được tự do để ăn cắp code nếu nó giúp.

+2

Điều này thật tuyệt vời. Bạn có thể làm cho nó chấp nhận dấu ngoặc đơn ngoài dấu ngoặc làm điểm đánh dấu của các thành phần? Ví dụ: Tôi muốn có thể hiển thị cây mẫu bằng cách sử dụng '(S (NP This) (VP (V) (^ NP a wug)))'. – dsg

+0

Tôi không có kế hoạch để làm điều này bởi vì tôi không muốn giới thiệu quá nhiều ký tự đặc biệt. Tôi nghĩ rằng các dấu ngoặc vuông là chuẩn trong ngôn ngữ học. Tuy nhiên, tôi khuyến khích bạn nới lỏng dự án và thay đổi nó theo nhu cầu của bạn. – mshang

+0

như xa giải pháp của bạn là hữu ích, stackoverflow là ok với điều này –