2009-08-09 26 views
6

Tôi đề cập rằng tôi đang thiết kế một ngôn ngữ. Kế hoạch là luôn luôn không thực hiện nó nhưng để thiết kế nó nhưng tôi đang xem xét việc thực hiện nó nếu tôi nghĩ rằng tôi có thể làm điều đó trong một khoảng thời gian hợp lý.Làm cách nào để triển khai intellisense cho ngôn ngữ của tôi trong studio trực quan?

Tôi có thể sử dụng ngôn ngữ của mình trong studio trực quan như thế nào? BooLangStudio có nó http://www.codinginstinct.com/2008/05/boo-in-visual-studio.html, http://www.codeplex.com/BooLangStudio

Trả lời

1

This là một nơi tốt để tìm Visual Studio Extensibility.

Ngoài ra, here. Tuy nhiên, liên kết đầu tiên có video cụ thể để thêm Intellisense vào dịch vụ ngôn ngữ của bạn.

24

Tất cả phụ thuộc vào thời gian bạn muốn chi tiêu. Tôi có khoảng 2.000 giờ làm việc trong các dự án Visual Studio IntelliSense của tôi dẫn đến chính xác một dịch vụ ngôn ngữ chủ yếu là hoàn thành. Điều đó nói rằng, nó không phải của bạn "trung bình" IntelliSense mở rộng để Visual Studio - xem feature set for more info.

Dưới đây là một số tài nguyên tốt để xem xét. Tôi có xu hướng viết với giả định rằng người dùng đã quen thuộc với cả các khái niệm cơ bản về Visual Studio Extensibility và phân tích cú pháp với ANTLR. Nếu không, bạn có thể bắt đầu tại www.antlr.org và với "cổng ANTLR" của một trong số simple Visual Studio language service tutorials.

Dưới đây là một số bài đăng cho biết mức độ nghiêm túc của tôi về chủ đề. : D

  • How does code completion work?
  • thông minh mã hoàn originalrevisited. Rõ ràng tôi coi trọng vấn đề này hơn những người khác (đã bỏ phiếu và bỏ phiếu để đóng cửa ?!), nhưng tôi tin rằng làm như vậy chỉ mang lại cho người dùng một sản phẩm tốt hơn. :)
  • Lexing gia tăng tốc độ cao để làm nổi bật cú pháp original (under IScanner-friendly lexers), cleaned up (significantly - vastly preferable to the original) và được thực hiện yet again 6x faster in 1/4 the memory.
  • Những thứ nhỏ như sane commenting/uncommentingbrace matching tạo sự khác biệt. Trên một lưu ý phụ, một khi bạn sử dụng một trong đó là hành vi tốt, những người khác (bao gồm cả những người cho một số ngôn ngữ Microsoft trong Visual Studio) là khá khó chịu.
  • Nếu bạn có thể, hãy đọc tất cả các bài đăng liên quan đến IntelliSense trên blog của tôi.
  • thụt lề thông minh là một PITA (tôi có nghĩa là thực sự thông minh, ví dụ như dịch vụ ngôn ngữ C# trong VS2008). Tôi có một mối quan hệ yêu/ghét với nó. Bây giờ tôi bực mình vì viết viên đạn này khiến tôi nghĩ về nó. Argh. Cái nhìn sâu sắc của tôi ở đây khiến tôi hơi tha thứ khi họ phá vỡ nó cho VS2010 Beta 1, nhưng nó không làm tôi mất đi sự khiếp sợ của nó.

PS: Bây giờ tôi có thể tạo công cụ đánh dấu cú pháp cho nhận xét/bỏ ghi chú ngôn ngữ mới trong 1 ngày. Trong cùng ngày, tôi cũng có thể nhận được các loại thanh thành viên & thành viên.

+0

+1 để tham khảo/liên kết :-) – torial

+0

nếu bạn đã bao giờ cảm thấy như tham gia một dự án phần mềm nguồn mở tích hợp một ngôn ngữ mới vào VS sau đó hãy nhìn vào Marvin fulloo.info/Examples/Marvin hoặc github.com/runefs/Marvin –

+1

@ 280Z28, tôi cũng đã hack với khả năng mở rộng của Visual Studio. Câu hỏi mà tôi đã không thể trả lời là: cách "RIGHT" để thực hiện dịch vụ ngôn ngữ hoàn toàn như VS2012/VS2010 là gì? Ngay bây giờ tôi đã được sử dụng MEF để thực hiện tất cả mọi thứ (IWpfTextViewCreationListener, IClassifier, IQuickInfoSource, ISignatureHelpSource, ICompletionSource) vv .. Nó có vẻ là làm việc, nhưng tôi tự hỏi, nếu thực hiện ILanguageService là cách tiếp cận tốt hơn? –

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