2009-04-14 26 views
32

He estado desarrollando un compilador para un nuevo idioma. Pensé que sería estupendo poder demostrar su desarrollo en un entorno sensible a la sintaxis. El lenguaje tiene bastantes pocas palabras clave personalizadas, y su estructura es significativamente diferente a los lenguajes comunes como Java o C/C++.¿Cómo puedo crear un subrayador de sintaxis de Eclipse personalizado?

¿Cómo puedo desarrollar un resaltador de sintaxis personalizado para Eclipse? He visto algunas referencias a algunos complementos, pero la documentación no es lo suficientemente detallada para las necesidades de mis principiantes.

Tengo una gramática/REs para mi idioma, así como listas de palabras clave relevantes.

Respuesta

14

El marco de Eclipse utiliza un modelo de documento bastante complejo para hacer coloreado de sintaxis (lo llaman colorear, no resaltar), no es tan simple como lo es en otros editores.

Si realmente quiere probar y meterse con él, es posible que desee leer the following from the Eclipse plug-in developer guide.

(El enlace anterior es ahora muerto. This may be a similar document o this.)

+0

Parece que es bastante complicado, pero produciría un producto de alta calidad. Tendré presente esta herramienta mientras continúo desarrollando mi lenguaje. ¡Gracias! –

+0

ese enlace está roto. ¿Es la misma cosa? http: //help.eclipse.org/indigo/index.jsp? topic =% 2Forg.eclipse.platform.doc.isv% 2Fguide% 2Feditors_highlighting.htm – thejoshwolfe

31

suena como si se trata de una conexión DSL (Domain Specific Language). Lo que está buscando suena exactamente como XText. Aquí hay un extracto de la página:

Xtext es un marco/herramienta para el desarrollo de DSL textuales externos. Simplemente describa su propia DSL utilizando el lenguaje gramatical EBNF simple de Xtext y el generador creará un analizador sintáctico, un modelo AST-meta (implementado en EMF) y un editor de texto Eclipse con todas las funciones.

También, mira this video que es una entrevista con una de las personas detrás de esto. Estoy seguro de que lo tomará desde aquí :-)

Quizás también desee comprobar this plugin. No es exactamente lo que estás buscando, pero podría ser un buen comienzo.

+1

El video ya no está disponible en Blip. –

4

Este es exactamente uno de los objetivos de LiClipse (http://www.liclipse.com/): hacer fácilmente un editor con resaltado de sintaxis, finalización básica de código, esquema, etc. con Eclipse como objetivo - tenga en cuenta que su núcleo (que permite crear lenguajes personalizados) fuente recientemente: http://liclipse.blogspot.com.br/2016/05/liclipse-303-providing-back-to-open.html.

No se requieren conocimientos de Java para agregar un nuevo idioma (sobre todo crear un nuevo .liclipse - que es un archivo YAML - en el lugar correcto y crear algunas reglas básicas para decir cómo particionar su idioma - es decir: por lo general, solo separa el código de los comentarios de las cadenas, y al especificar las palabras clave que tiene en la partición ya le daría un resaltado de sintaxis adecuado).

Si lo descargas, hay una serie de ejemplos en plugins \ com.brainwy.liclipse.editor \ languages ​​y hay alguna documentación básica en http://www.liclipse.com/text/supported_languages.html y http://www.liclipse.com/text/scope_definition.html sobre cómo hacerlo.

+2

La idea me parece agradable, pero tenga en cuenta que LiClipse no es realmente gratuita. En términos resumidos, la licencia permite a cualquiera evaluar a LiClipse durante 30 días, pero debe comprarse para su uso continuo. – Anton

+0

@ Anton: El LiClipse independiente la aplicación no es gratuita, pero el complemento LiClipseText Eclipse [aparentemente es] (http://www.liclipse.com/text/index.html). Se puede instalar desde el sitio de actualización de LiClipse en 'http: // www.liclipse.com/text/updates'. – Lii

+1

@Lii sí, el manejo de idiomas principales desde LiClipse fue abierto como LiClipseText (ver: http://liclipse.blogspot.com.br/2016/05/liclipse-303-providing-back-to-open.html) –

1

En su lugar, puede utilizar la funcionalidad de lenguaje definido por el usuario de Notepad ++. Normalmente usamos Notepad ++ para dicho caso de uso. En eso es solo un XML. También notepad ++ proporciona edición basada en UI para definir su gramática específica del idioma.

Cuestiones relacionadas