El resaltado de sintaxis es una característica de los editores de texto que se utiliza para programación , secuencias de comandos o lenguajes de marcado , como HTML . La función muestra texto, especialmente código fuente , en diferentes colores y fuentes según la categoría de términos. [1] Esta característica facilita la escritura en un lenguaje estructurado, como un lenguaje de programación o un lenguaje de marcado, ya que tanto las estructuras como los errores de sintaxis son visualmente distintos. Esta característica también se emplea en muchos contextos relacionados con la programación (como manuales de programación), ya sea en forma de libros coloridos o sitios web en línea para facilitar la comprensión de los fragmentos de código a los lectores. El resaltado no afecta el significado del texto en sí; está destinado únicamente a lectores humanos.
El resaltado de sintaxis es una forma de notación secundaria , ya que los resaltados no forman parte del significado del texto, sino que sirven para reforzarlo. Algunos editores también integran el resaltado de sintaxis con otras funciones, como la revisión ortográfica o el plegado de código , como ayudas para la edición externa al lenguaje.
El resaltado de sintaxis es una estrategia para mejorar la legibilidad y el contexto del texto; especialmente para código que abarca varias páginas. El lector puede ignorar fácilmente grandes secciones de comentarios o código, dependiendo de lo que esté buscando. El resaltado de sintaxis también ayuda a los programadores a encontrar errores en su programa. Por ejemplo, la mayoría de los editores resaltan las cadenas literales en un color diferente. En consecuencia, detectar un delimitador faltante es mucho más fácil debido al color contrastante del texto. La coincidencia de llaves es otra característica importante de muchos editores populares. Esto simplifica ver si se ha omitido una llave o localizar la coincidencia de la llave en la que se encuentra el cursor resaltando el par en un color diferente.
Un estudio publicado en la conferencia PPIG evaluó los efectos del resaltado de sintaxis en la comprensión de programas cortos y encontró que la presencia del resaltado de sintaxis reduce significativamente el tiempo que le toma a un programador internalizar la semántica de un programa. [2] Además, los datos recopilados de un rastreador ocular durante el estudio sugirieron que el resaltado de sintaxis permite a los programadores prestar menos atención a los componentes sintácticos estándar, como las palabras clave.
Algunos editores de texto también pueden exportar el marcado en color en un formato adecuado para imprimir o importar a procesadores de texto y otros tipos de software de formato de texto; por ejemplo, como versión HTML, LaTeX coloreada, PostScript o RTF de su resaltado de sintaxis. Existen varias bibliotecas o "motores" de resaltado de sintaxis que se pueden usar en otras aplicaciones, pero que no son programas completos en sí mismos, por ejemplo, la extensión Generic Syntax Highlighter (GeSHi) para PHP .
Para los editores que admiten más de un idioma, el usuario generalmente puede especificar el idioma del texto, como C , LaTeX , HTML , o el editor de texto puede reconocerlo automáticamente según la extensión del archivo o escaneando el contenido del archivo. Esta detección automática de idioma presenta problemas potenciales. Por ejemplo, es posible que un usuario desee editar un documento que contenga:
En estos casos, no está claro qué idioma utilizar y es posible que un documento no se resalte o se resalte incorrectamente.
La mayoría de los editores con resaltado de sintaxis permiten dar diferentes colores y estilos de texto a docenas de subelementos léxicos diferentes de sintaxis. Estos incluyen palabras clave, comentarios, declaraciones de flujo de control, variables y otros elementos. Los programadores suelen personalizar en gran medida sus configuraciones en un intento de mostrar la mayor cantidad de información útil posible sin dificultar la lectura del código.
Llamada decoración de sintaxis , algunos editores también muestran ciertos elementos sintácticos de maneras más agradables a la vista, por ejemplo, reemplazando un operador de puntero como ->
en el código fuente por un símbolo de flecha real (→), o cambiando pistas de decoración de texto como /cursiva/, *negrita* , o _subrayar_ en los comentarios del código fuente mediante una presentación real en cursiva , negrita o subrayada .
A continuación se muestra una comparación de un fragmento de código C :
A continuación se muestra otro fragmento de código C++ resaltado con sintaxis :
// Crear objetos de ventana "window_count": const auto window_count = int { 10 }; auto windows = std :: matriz < std :: share_ptr < Ventana > , max_window_count > {}; for ( auto i = int { 0 }; i < window_count ; ++ i ) { windows [ i ] = std :: make_shared < Window > (); }
En el ejemplo de C++, el editor ha reconocido las palabras clave const
, auto
, int
y for
. El comentario al principio también está resaltado de una manera específica para distinguirlo del código de trabajo.
Las ideas de resaltado de sintaxis se superponen significativamente con las de los editores dirigidos por sintaxis . Uno de los primeros editores de código de este tipo fue Emily, la editora de código de Wilfred Hansen de 1969. [3] [4] Proporcionó funciones avanzadas de finalización de código independientes del lenguaje y, a diferencia de los editores modernos con resaltado de sintaxis, en realidad hizo imposible crear programas sintácticamente incorrectos.
En 1982, Anita H. Klock y Jan B. Chodak presentaron una patente para el primer sistema de resaltado de sintaxis conocido, [5] que se utilizó en el periférico Entertainment Computer System (ECS) de Intellivision, lanzado en 1983. [6] Destacaría diferentes elementos de los programas BASIC y se implementó en un intento de facilitar a los principiantes, especialmente a los niños, comenzar a escribir código. [7] Posteriormente, el Live Parsing Editor ( LEXX ) escrito para el sistema operativo VM para la informatización del Oxford English Dictionary en 1985 fue uno de los primeros en utilizar resaltado de sintaxis en color. Su capacidad de análisis en vivo permitió agregar analizadores proporcionados por el usuario al editor, para texto, programas, archivos de datos, etc. [8] En microcomputadoras , MacPascal 1.0 (10 de octubre de 1985) reconoció la sintaxis de Pascal a medida que se escribía y usaba la fuente. cambios (por ejemplo, negrita para las palabras clave) para resaltar la sintaxis en el Macintosh compacto monocromático y sangría automática del código para que coincida con su estructura. [9]
Algunos editores de texto y herramientas de formato de código resaltan la sintaxis utilizando heurísticas de coincidencia de patrones (por ejemplo, expresiones regulares ) en lugar de implementar un analizador para cada idioma posible. [10] Esto puede dar como resultado que un sistema de representación de texto muestre un resaltado de sintaxis algo inexacto y, en algunos casos, funcione lentamente. Una solución utilizada por los editores de texto para superar este problema no siempre es analizar el archivo completo sino solo el área visible, a veces escaneando hacia atrás en el texto hasta un número limitado de líneas para "sincronizar".
Por otro lado, el editor a menudo muestra código durante su creación, aunque esté incompleto o sea incorrecto, y los analizadores estrictos (como los que se usan en los compiladores) no logran analizar el código la mayor parte del tiempo.
Algunos IDE modernos y específicos de un idioma (a diferencia de los editores de texto) realizan un análisis completo del idioma, lo que da como resultado una comprensión muy precisa del código. David Nolden [11] denominó "resaltado semántico" una extensión del resaltado de sintaxis para el IDE de código abierto de C++ KDevelop . Por ejemplo, el resaltado semántico puede dar a las variables locales colores distintos y únicos para mejorar la comprensibilidad del código. En 2014, la idea de variables locales coloreadas se popularizó aún más debido a una publicación de blog de Evan Brooks, [12] y luego de eso, la idea se transfirió a otros IDE populares como Visual Studio , [13] Xcode , [14] y otros.
El color en una interfaz de usuario es menos útil si el usuario tiene cierto grado de daltonismo .