Cách tạo ngôn ngữ mới để sử dụng trong Visual Studio


102

Tôi muốn viết một ngôn ngữ tạo khuôn mẫu mới và tôi muốn Visual Studio "hỗ trợ" nó. Những gì tôi cần biết là:

  1. Làm cách nào để phân tích cú pháp ngôn ngữ mới của tôi?
    Với một số mã trong ngôn ngữ mẫu mới của tôi, làm cách nào để dịch nó sang HTML? Hiện tại, tôi đang sử dụng biểu thức chính quy để phân tích cú pháp mã thông báo theo mã thông báo, nhưng tôi không nghĩ rằng điều này sẽ mở rộng quy mô tốt vì ngôn ngữ trở nên phức tạp hơn và không có kiểm tra lỗi. Tôi đã nghe nói về ANTLR nhưng chưa bao giờ sử dụng nó. Đó sẽ là công cụ phù hợp cho công việc này, hay có lẽ là một thứ gì đó đơn giản hơn? Tốt nhất là tôi muốn gửi bất kỳ lỗi cú pháp nào đến cửa sổ lỗi với càng nhiều thông tin càng tốt (dòng #, loại lỗi) giống như các ngôn ngữ khác.
  2. Làm cách nào để tạo một loại tệp mới cho Visual Studio?
  3. Làm cách nào để nhận được đánh dấu cú pháp?
    Tôi có thể sử dụng cùng một trình phân tích cú pháp mà tôi đã tạo ở bước 1 hay đây là một thứ hoàn toàn khác?
  4. Làm cách nào để nhận Intellisense?

Tôi muốn viết trình phân tích cú pháp của mình bằng C #.

Câu trả lời:


62

Tôi sẽ xem xét một ngôn ngữ khác đã thực hiện công việc tích hợp với Visual Studio. Một ví dụ tuyệt vời là Boo. Tích hợp ngôn ngữ và Visual Studio là mã nguồn mở. Vì vậy, bạn có thể xem chính xác những gì họ phải làm.

Đánh dấu cú pháp Boo cho VS2010 bao gồm một số liên kết được đề xuất trên trang chủ của nó, tôi sẽ sao chép để dễ dàng tham khảo:


29

Về khía cạnh Visual Studio, những gì bạn cần là một "dịch vụ ngôn ngữ", là thực thể xử lý việc chỉnh màu, intellisense, v.v. cho một loại / phần mở rộng tệp nhất định.

Để có phần giới thiệu, hãy xem bài viết này
Và để biết mẫu mã, hãy xem tại đây

Về phân tích cú pháp, có rất nhiều công nghệ và tôi sẽ không đưa ra ý kiến ​​/ lời khuyên.

Hãy cẩn thận, có một lượng lớn công việc liên quan, mặc dù theo ý kiến ​​của tôi, trong VS2010 đơn giản hơn nhiều so với các phiên bản trước của Visual Studio để cung cấp loại tiện ích mở rộng này.

Xem thêm

Visual Studio 2010 Khả năng mở rộng, MPF và các dịch vụ ngôn ngữ


9

Tôi đã viết Dịch vụ ngôn ngữ VS sử dụng bài viết này làm cơ sở: http://www.codeproject.com/KB/recipes/VSLanguageService.aspx

Sẽ không quá tệ nếu bạn có một kiến ​​thức cơ bản về Ngữ pháp.


Thật tiếc khi anh ấy đã không tiếp tục hướng dẫn đó ... đó là một bài hướng dẫn thực sự tốt. Cảm ơn!
mpen

1
Tất cả những gì nó thực sự thiếu là bước tiếp theo, cài đặt gói. stackoverflow.com/questions/4160391/…
ColinCren

2

Có một mẫu trong VS SDK hiển thị hầu hết các tính năng bạn đang tìm kiếm.


2

Tôi đang sử dụng VS với ngôn ngữ riêng và rất cần một điểm nhấn về cú pháp . Tôi đã xây dựng dựa trên hướng dẫn này: https://mattduffield.wordpress.com/2012/07/31/writing-a-brightscript-syntax-highlight-extension-for-visual-studio-2010/

Tôi biết hướng dẫn là trong VS2010. Tôi đã tạo của tôi trong VS2012 mà không có hoặc rất nhỏ trục trặc. (cũng đã làm việc trong VS2013) Gần đây tôi đã thay đổi thành VS2015 và giải pháp có thể được chỉnh sửa, xây dựng mà không có vấn đề gì.


2

Tôi tìm thấy bộ sưu tập mẫu gần đây rất hữu ích này cho Visual Studio 2013 SDK: http://blogs.msdn.com/b/vsx/archive/2014/05/30/vs-2013-sdk-samples-released.aspx

Nó cũng chứa phiên bản gần đây của OokLanguage nghe có vẻ đầy hứa hẹn.

Chúng tôi đã sử dụng ANTLR 4 để phân tích cú pháp ngôn ngữ của chúng tôi, ngôn ngữ này hoạt động giống như một sự quyến rũ và cho phép tương tác trực tiếp với mã C #. Hoàn toàn có thể giới thiệu nó.


0

Như đã đề cập trong các câu trả lời khác, mẫu mã thú vị nhất là phần mở rộng ngôn ngữ Ook cho phiên bản mới nhất của Visual Studio (2017 tại thời điểm viết bài).

Đối với VS 2015, hãy xem mẫu trong nhánh VS2015 .

Để cài đặt SDK cho 2015 trở lên, bạn cần chạy lại thiết lập VS. Vào năm 2015, nó được gọi là "Visual Studio Extensibility Tools Update 3".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.