Como criar um novo idioma para uso no Visual Studio

102

Quero escrever uma nova linguagem de templates e quero que o Visual Studio "dê suporte" a ela. O que preciso saber é:

  1. Como analiso meu novo idioma?
    Dado algum código em minha nova linguagem de modelo, como faço para traduzi-lo para HTML? No momento, estou usando expressões regulares para analisar token por token, mas não acho que isso vá escalar muito bem, pois a linguagem fica mais complicada e não há verificação de erros. Já ouvi falar do ANTLR, mas nunca o usei. Essa seria a ferramenta certa para este trabalho, ou talvez haja algo mais simples? Idealmente, gostaria de enviar quaisquer erros de sintaxe para a janela de erro com o máximo de informações possível (linha #, tipo de erro) como fazem outras linguagens.
  2. Como faço para criar um novo tipo de arquivo para Visual Studio?
  3. Como obtenho o realce de sintaxe?
    Posso usar o mesmo analisador que criei na etapa 1 ou isso é algo totalmente diferente?
  4. Como faço para obter o Intellisense?

Eu prefiro escrever meu analisador em C #.

mpen
fonte

Respostas:

62

Eu daria uma olhada em outra linguagem que já fez o trabalho braçal de integração com o Visual Studio. Um ótimo exemplo é Boo. A linguagem e a integração do Visual Studio são de código aberto. Assim, você pode ver exatamente o que eles tiveram que fazer.

O Boo Syntax Highlighting for VS2010 inclui alguns links recomendados em sua página inicial, que copiarei para fácil referência:

James Kovacs
fonte
29

Em relação aos aspectos do Visual Studio, o que você precisa é de um "serviço de linguagem", que é a entidade que trata da colorização, do intellisense, etc. para uma determinada extensão / tipo de arquivo.

Para uma introdução, consulte este artigo
E para um exemplo de código, consulte aqui

Em relação à análise, existem muitas tecnologias e não vou oferecer uma opinião / conselho.

Cuidado, há uma boa quantidade de trabalho envolvida, embora, em minha opinião, seja muito mais simples no VS2010 do que nas versões anteriores do Visual Studio fornecer esse tipo de extensão.

Veja também

Extensibilidade do Visual Studio 2010, MPF e serviços de linguagem

Brian
fonte
2

Há um exemplo no VS SDK que mostra a maioria dos recursos que você está procurando.

leppie
fonte
2

Eu estava usando o VS com sua própria linguagem e precisava desesperadamente de um destaque de sintaxe . Construí o meu com base neste tutorial: https://mattduffield.wordpress.com/2012/07/31/writing-a-brightscript-syntax-highlight-extension-for-visual-studio-2010/

Eu sei que o tutorial está no VS2010. Eu fiz o meu no VS2012 com nenhum ou muito pequeno soluço. (também funcionou no VS2013) Recentemente mudei para o VS2015 e a solução pode ser editada, construída sem problemas.

DDan
fonte
2

Achei esta coleção muito útil de exemplos recentes para Visual Studio 2013 SDK: http://blogs.msdn.com/b/vsx/archive/2014/05/30/vs-2013-sdk-samples-released.aspx

Ele também contém a versão recente do OokLanguage que parece promissora.

Usamos ANTLR 4 para analisar nossa linguagem, que funciona perfeitamente e permite a interação direta com o código C #. Posso recomendar totalmente.

Alexander Pacha
fonte
0

Conforme mencionado em outras respostas, o exemplo de código mais interessante é a extensão de linguagem Ook para a versão mais recente do Visual Studio (2017 no momento da escrita).

Para o VS 2015, veja a amostra no ramo VS2015 .

Para instalar o SDK para 2015 ou posterior, você precisa executar novamente a configuração do VS. Em 2015 é chamado de "Atualização 3 das Ferramentas de Extensibilidade do Visual Studio".

Andreas Haferburg
fonte