Cara membuat bahasa baru untuk digunakan di Visual Studio .NET

102

Saya ingin menulis bahasa template baru, dan saya ingin Visual Studio "mendukung" -nya. Yang perlu saya ketahui adalah:

  1. Bagaimana cara mengurai bahasa baru saya?
    Diberikan beberapa kode dalam bahasa template baru saya, bagaimana cara menerjemahkannya ke dalam HTML? Saat ini saya menggunakan ekspresi reguler untuk mengurai token demi token, tetapi menurut saya ini tidak akan diskalakan dengan baik karena bahasanya menjadi lebih rumit, dan tidak ada pemeriksaan kesalahan. Saya pernah mendengar tentang ANTLR tetapi tidak pernah menggunakannya. Apakah itu alat yang tepat untuk pekerjaan ini, atau mungkin ada sesuatu yang lebih sederhana? Idealnya saya ingin mengirim kesalahan sintaks ke jendela kesalahan dengan informasi sebanyak mungkin (baris #, jenis kesalahan) seperti yang dilakukan bahasa lain.
  2. Bagaimana cara membuat tipe file baru untuk Visual Studio?
  3. Bagaimana cara mendapatkan penyorotan sintaks?
    Dapatkah saya menggunakan parser yang sama yang saya buat di langkah 1, atau apakah ini sesuatu yang sama sekali berbeda?
  4. Bagaimana cara saya mendapatkan Intellisense?

Saya lebih suka menulis parser saya di C #.

mpen
sumber

Jawaban:

62

Saya akan melihat bahasa lain yang telah melakukan kerja keras untuk mengintegrasikan dengan Visual Studio. Contoh yang bagus adalah Boo. Integrasi bahasa dan Visual Studio adalah open source. Jadi, Anda dapat melihat dengan tepat apa yang harus mereka lakukan.

Penyorotan Sintaks Boo untuk VS2010 menyertakan beberapa tautan yang direkomendasikan di beranda, yang akan saya salin untuk referensi mudah:

James Kovacs
sumber
29

Mengenai aspek Visual Studio, yang Anda butuhkan adalah "layanan bahasa", yang merupakan entitas yang menangani pewarnaan, intellisense, dll. Untuk ekstensi / jenis file tertentu.

Untuk intro, lihat artikel ini
Dan untuk contoh kode lihat di sini

Mengenai penguraian, ada banyak teknologi, dan saya tidak akan menawarkan pendapat / saran.

Berhati-hatilah, ada cukup banyak pekerjaan yang terlibat, meskipun menurut saya jauh lebih mudah di VS2010 daripada versi Visual Studio sebelumnya untuk menyediakan ekstensi semacam ini.

Lihat juga

Visual Studio 2010 Extensibility, MPF dan layanan bahasa

Brian
sumber
2

Ada contoh di VS SDK yang menunjukkan sebagian besar fitur yang Anda cari.

leppie
sumber
2

Saya menemukan koleksi sampel terbaru yang sangat berguna untuk Visual Studio 2013 SDK: http://blogs.msdn.com/b/vsx/archive/2014/05/30/vs-2013-sdk-samples-released.aspx

Ini juga berisi versi terbaru dari OokLanguage yang terdengar menjanjikan.

Kami menggunakan ANTLR 4 untuk mengurai bahasa kami yang berfungsi seperti pesona dan memungkinkan interaksi langsung dengan kode C #. Benar-benar dapat merekomendasikannya.

Alexander Pacha
sumber
0

Seperti disebutkan dalam jawaban lain, contoh kode yang paling menarik adalah ekstensi bahasa Ook untuk versi terbaru Visual Studio (2017 pada saat penulisan).

Untuk VS 2015 lihat sampel di cabang VS2015 .

Untuk menginstal SDK untuk tahun 2015 atau lebih baru, Anda perlu menjalankan kembali penyiapan VS. Pada 2015 ini disebut "Visual Studio Extensibility Tools Update 3".

Andreas Haferburg
sumber