2010-10-01 22 views
13

Tôi đang tạo một trình cắm thêm Eclipse để nó hỗ trợ một ngôn ngữ mới. Vấn đề tôi gặp phải là với liên kết kiểu/tệp nội dung và trình soạn thảo tương ứng của nó.Trình cắm thêm Eclipse: Tạo một phần mở rộng tệp mới cho một ngôn ngữ không được hỗ trợ bởi Eclipse

Ngôn ngữ không có cơ sở trong Java hay XML và giả sử mở rộng của nó là '.xyz'

Từ những gì tôi hiểu nghiên cứu trực tuyến, tôi sẽ cần phải tạo ra một loại nội dung mới với phần mở rộng tập tin '.xyz'. Nhưng tất cả thông tin tôi tìm thấy trực tuyến có liên quan đến việc kết hợp một phần mở rộng mới với java (để làm nổi bật cú pháp java) hoặc tạo một loại tệp mới có thể là một biến thể của XML, do đó có rất nhiều chi tiết về người gửi.
Về cơ bản, tôi nhầm lẫn về người đăng ký nội dung, tôi cũng có tạo ra một người viết mới cho một ngôn ngữ mới không? Và loại cơ sở nào tôi sẽ cung cấp cho một ngôn ngữ không liên quan đến XML hoặc JAVA?

Ngoài ra, vì tôi sẽ thêm cú pháp tô sáng của riêng mình, tôi có cần phải tạo trình soạn thảo của riêng mình hay chỉ có thể mở một tệp như vậy trong trình soạn thảo được đặt trước (trình chỉnh sửa).

Gói tôi đang xem cho loại nội dung là org.eclipse.core.contenttype.contentTypes.

+0

chúc may mắn trong nỗ lực của bạn :-) –

+0

Bắt nội dung này trực tiếp với tư cách là người dùng Eclipse đủ mạnh, vì vậy tôi cũng chúc bạn may mắn tìm ra tác giả của trình cắm thêm! – dty

+0

Cảm ơn bạn, nhưng tôi khó có thể tự gọi mình là tác giả của plug-in ... Vẫn đang học! – nbz

Trả lời

11

Tôi nhận ra rằng tôi chưa bao giờ thực sự chọn câu trả lời cho câu hỏi này và cuối cùng tôi tìm thấy một số thông tin hữu ích về nó, vì vậy tôi nghĩ tôi sẽ chia sẻ nó.

Đây là thông tin tôi đã hiểu và sử dụng; Tôi xin lỗi nếu có bất kỳ lỗi hoặc tôi đã hiểu lầm, và tôi mở cửa cho bất kỳ sửa chữa.

Nó thực sự đơn giản hơn rất nhiều so với tôi mong đợi. Để tạo tiện ích tập tin mới, bạn chỉ cần mở rộng

org.eclipse.core.contenttype.contentTypes 

Nếu bạn đang sử dụng PDE, sau đó bạn có thể nhấp chuột vừa phải trên phần mở rộng (khi nó được thêm vào trong tab Tiện ích) và chọn New. .. -> content-type

đây là mã xml cho nó,

<extension 
     id="com.newLanguage.XYZ.contentType" 
     point="org.eclipse.core.contenttype.contentTypes"> 
     <content-type 
      file-extensions="xyz,xyzz" 
      id="com.newLanguage.XYZ.contenttypeMod" 
      name="XYZ File" 
      priority="normal"> 
     </content-type> 
    </extension> 

Ở đây bạn có thể thiết lập các thuộc tính của này content-type bằng cách định nghĩa một id duy nhất, một tên con người có thể đọc được và sự mở rộng.Bạn cũng có thể cung cấp nhiều tiện ích mở rộng cho loại nội dung này. Ví dụ, ngôn ngữ XYZ của tôi có thể có 2 loại phần mở rộng '.xyz, và' .xyzz '.

Người đăng ký nội dung xuất hiện khi tôi có một phần mở rộng tệp chung: '.xy' nhưng nội dung hoặc định dạng của tệp có thể khác biệt và vì vậy tôi cần người gửi để người chỉnh sửa có thể xem nội dung tập tin và nhận ra sự khác biệt. Điều này rất thuận tiện cho việc đánh dấu cú pháp mà tôi cần biết sự khác biệt.

Vì tôi không giỏi giải thích điều này, this link cực kỳ hữu ích đối với tôi.

Nhưng tất cả trong tất cả, this tutorial là những gì giúp tôi đạt được tốc độ của mình và thực sự đã giúp tôi hiểu được cách triển khai trình cắm thêm IDE cho Eclipse. Tôi nghĩ đây là một nơi rất lý tưởng để bắt đầu, đặc biệt đối với một người mới.

Một địa điểm khác mà giữ công việc của tôi là Eclipse FAQs nhưng tôi đặc biệt muốn chỉ ra section 3.5 Implementing Support for Your Own Language có nhiều liên kết hướng dẫn.

+0

"PDE" là gì? Bạn tham khảo nó hai lần nhưng không giải thích nó là gì. – tgharold

+0

Môi trường phát triển trình cắm – nbz

9

Lưu ý: điều này (hỗ trợ ngôn ngữ mới, đánh dấu cú pháp tùy chỉnh, ...) là loại tính năng được cung cấp với XText.

Xtext - Khung Phát triển Ngôn ngữ

Với Xtext bạn có thể dễ dàng tạo ra ngôn ngữ lập trình của riêng bạn và các ngôn ngữ miền cụ thể (DSL).
Khung công tác hỗ trợ phát triển cơ sở hạ tầng ngôn ngữ bao gồm các trình biên dịch và trình thông dịch cũng như tích hợp IDE dựa trên Eclipse đầy đủ.

XText custom editor example

Kể từ khi sources are available, bạn có thể có rất nhiều manh mối để minh họa cho việc sử dụng các gói mà bạn đang tìm kiếm.

+0

Và điều này sẽ áp dụng ngay cả khi trình biên dịch và thông dịch viên đã được viết và tôi chỉ cần tạo IDE (GUI cho các lập trình viên ngôn ngữ xyz, chính xác) mà sau đó kết nối với trình biên dịch và thông dịch viên? – nbz

+0

@nEm: Tôi không chắc chắn: XText căn cứ tất cả các lớp được tạo trên ngữ pháp ngôn ngữ của bạn, vì vậy tôi không biết liệu bạn có thể chuyển đổi các lớp đó cho các lớp của riêng bạn hay không. Nhưng quan điểm của tôi là: về mặt soạn thảo và làm nổi bật cú pháp, bạn có rất nhiều ví dụ thực hiện thực tế trong plugin XText này. Vì vậy, ngay cả khi bạn không sử dụng nó trực tiếp, bạn có thể ít nhất có một số ý tưởng từ nó. – VonC

+0

Yup hiểu rồi! Cảm ơn, tôi sẽ xem xét nó. Chắc chắn một số hướng tốt để bắt đầu. – nbz

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