2012-01-22 39 views
8

Có công cụ nào cho phép tôi chỉ định đánh dấu cú pháp cho một ngôn ngữ cụ thể không, sau đó tạo các tệp đánh dấu cú pháp cho một số trình soạn thảo phổ biến hơn?Công cụ/ngôn ngữ đánh dấu cú pháp hoạt động với nhiều người chỉnh sửa

Tôi hỏi vì tôi đang phát triển ngôn ngữ dành riêng cho miền và tôi muốn cung cấp hỗ trợ đánh dấu cú pháp cho ngôn ngữ đã nói. Tuy nhiên, tôi không muốn viết các tập tin đánh dấu cú pháp riêng biệt cho mỗi trình soạn thảo (Vim, Notepad ++, Visual Studio, v.v.).

Loại bản dịch này có vẻ như có thể, vì các khái niệm cốt lõi để đánh dấu cú pháp nói chung không phụ thuộc vào trình soạn thảo bạn đang sử dụng. Tôi chỉ không biết nếu một điều như vậy đã tồn tại.

Trả lời

1

Tôi không biết bất cứ điều gì như thế, nhưng theo ý kiến ​​của tôi nó sẽ khá dễ dàng để sản xuất. Ví dụ, người ta có thể tạo một định dạng phổ quát dựa trên XML (dưới dạng một lược đồ DTD/XSL) và sử dụng các phép biến đổi XSLT của trình soạn thảo cụ thể. Sau đó, mỗi người tạo trình chỉnh sửa (hoặc người khác) sẽ tạo một tệp XSLT cho trình soạn thảo của mình. Và đối với mỗi ngôn ngữ mới, một XML sẽ được tạo ra.

Vấn đề lớn nhất là xác định như một ngôn ngữ mà sẽ đáp ứng ít nhất các tiêu chí:

  • Đầy đủ: nó nên chứa tất cả các tính năng có thể làm nổi bật cấu hình cú pháp.
  • Dễ sử dụng: nó không quá phức tạp đối với các ngôn ngữ đơn giản.
  • Tính mở và tiêu chuẩn hóa: cần phổ biến để hữu ích. Để trở nên phổ biến, nó phải được mở và chuẩn hóa.
+0

Tôi đã có những suy nghĩ tương tự về việc tạo một định dạng phổ quát/ngôn ngữ để làm nổi bật cú pháp (I cũng đang suy nghĩ về XML). Nó sẽ thực sự mát mẻ nếu bạn có thể làm bản dịch 2 chiều để nếu ai đó đã biết định dạng cú pháp hiện có, họ có thể dịch nó sang định dạng 'phổ quát', sau đó thành tất cả các định dạng khác. Có vẻ như một ý tưởng hay - có thể tôi sẽ xem xét nhiều hơn khi tôi nhận được thời gian: o) – simplyletgo

2

Khá nhiều người chỉnh sửa sử dụng scintilla (http://www.scintilla.org/) để chỉnh sửa mã nguồn và làm nổi bật cú pháp: ví dụ: Notepad ++ trên cửa sổ, gedit trong gnome, Mã :: khối. Do đó, bạn có thể xem xét thêm định nghĩa cú pháp vào Scintilla. Theo như tôi hiểu đây là vấn đề viết một định nghĩa xml của một từ vựng cho ngôn ngữ của bạn (xem ví dụ this page cho Mã :: Khối)

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