Cómo crear un nuevo idioma para usar en Visual Studio

102

Quiero escribir un nuevo lenguaje de plantillas y quiero que Visual Studio lo "admita". Lo que necesito saber es:

  1. ¿Cómo analizo mi nuevo idioma?
    Dado algo de código en mi nuevo lenguaje de plantilla, ¿cómo lo traduzco a HTML? En este momento estoy usando expresiones regulares para analizar token por token, pero no creo que esto vaya a escalar muy bien a medida que el lenguaje se vuelve más complicado y no hay verificación de errores. He oído hablar de ANTLR pero nunca lo usé. ¿Sería esa la herramienta adecuada para este trabajo, o quizás hay algo más simple? Idealmente, me gustaría enviar cualquier error de sintaxis a la ventana de error con tanta información como sea posible (número de línea, tipo de error) como lo hacen otros idiomas.
  2. ¿Cómo creo un nuevo tipo de archivo para Visual Studio?
  3. ¿Cómo obtengo el resaltado de sintaxis?
    ¿Puedo usar el mismo analizador que creé en el paso 1 o es algo completamente diferente?
  4. ¿Cómo obtengo Intellisense?

Preferiría escribir mi analizador en C #.

mpen
fuente

Respuestas:

62

Echaría un vistazo a otro lenguaje que ya ha hecho el trabajo preliminar de integrarse con Visual Studio. Un gran ejemplo es Boo. El lenguaje y la integración de Visual Studio son de código abierto. Para que pueda ver exactamente lo que tenían que hacer.

El Resaltado de sintaxis de Boo para VS2010 incluye algunos enlaces recomendados en su página de inicio, que copiaré para una fácil referencia:

James Kovacs
fuente
29

En cuanto a los aspectos de Visual Studio, lo que necesita es un "servicio de lenguaje", que es la entidad que maneja la coloración, intellisense, etc. para una determinada extensión / tipo de archivo.

Para una introducción, vea este artículo
y para una muestra de código, vea aquí

Con respecto al análisis, hay muchas tecnologías y no ofreceré una opinión / consejo.

Cuidado, hay una buena cantidad de trabajo involucrado, aunque en mi opinión es mucho más sencillo en VS2010 que en versiones anteriores de Visual Studio proporcionar este tipo de extensión.

Ver también

Servicios de lenguaje, MPF y extensibilidad de Visual Studio 2010

Brian
fuente
2

Hay una muestra en VS SDK que muestra la mayoría de las funciones que está buscando.

leppie
fuente
2

Encontré esta colección muy útil de muestras recientes para Visual Studio 2013 SDK: http://blogs.msdn.com/b/vsx/archive/2014/05/30/vs-2013-sdk-samples-released.aspx

También contiene la versión reciente de OokLanguage que suena prometedora.

Usamos ANTLR 4 para analizar nuestro lenguaje que funciona como un encanto y permite la interacción directa con el código C #. Puedo recomendarlo totalmente.

Alejandro Pacha
fuente
0

Como se menciona en otras respuestas, la muestra de código más interesante es la extensión de lenguaje Ook para la última versión de Visual Studio (2017 en el momento de escribir este artículo).

Para VS 2015, vea el ejemplo en la rama VS2015 .

Para instalar el SDK para 2015 o posterior, debe volver a ejecutar la configuración de VS. En 2015 se llamó "Actualización 3 de las herramientas de extensibilidad de Visual Studio".

Andreas Haferburg
fuente