Resaltado de sintaxis - Syntax highlighting

Resaltado de sintaxis HTML

El resaltado de sintaxis es una característica de los editores de texto que se utilizan para lenguajes de programación , secuencias de comandos o marcas , como HTML . La función muestra texto, especialmente código fuente , en diferentes colores y fuentes según la categoría de términos. Esta característica facilita la escritura en un lenguaje estructurado, como un lenguaje de programación o un lenguaje de marcado, tanto en estructuras como en errores de sintaxis.son visualmente distintos. Esta característica también se emplea en muchos contextos relacionados con la programación (como los 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, pero 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ódigos , como ayudas para la edición que son externas al idioma.

Beneficios practicos

Resaltando el efecto del delimitador faltante (después de watch = 'false ) en JavaScript

El resaltado de sintaxis es una estrategia para mejorar la legibilidad y el contexto del texto; especialmente para el código que se extiende por 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 los literales de cadena en un color diferente. En consecuencia, detectar un delimitador que falta es mucho más fácil debido al color contrastante del texto. La coincidencia de llaves es otra característica importante con muchos editores populares. Esto hace que sea sencillo ver si se ha omitido un corsé o localizar la coincidencia del corsé en el que se encuentra el cursor al resaltar 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, encontrando que la presencia de resaltado de sintaxis reduce significativamente el tiempo que tarda un programador en internalizar la semántica de un programa. 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.

Soporte en editores de texto

gedit admite el resaltado de sintaxis

Algunos editores de texto también pueden exportar el marcado en color en un formato que sea adecuado para imprimir o para importar en procesadores de texto y otros tipos de software de formato de texto; por ejemplo, como una versión HTML, LaTeX coloreada, PostScript o RTF de su resaltado de sintaxis. Hay varias bibliotecas de resaltado de sintaxis o "motores" que se pueden usar en otras aplicaciones, pero 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, un usuario puede querer editar un documento que contenga:

  • más de un idioma (por ejemplo, al editar un archivo HTML que contiene código JavaScript incrustado ),
  • un lenguaje que no se reconoce (por ejemplo, al editar el código fuente de un lenguaje de programación poco conocido o relativamente nuevo),
  • un idioma que difiere del tipo de archivo (por ejemplo, cuando se edita el código fuente en un archivo sin extensión en un editor que usa extensiones de archivo para detectar el idioma).

En estos casos, no está claro qué idioma usar y es posible que un documento no se resalte o se resalte incorrectamente.

Elementos de sintaxis

La mayoría de los editores con resaltado de sintaxis permiten dar diferentes colores y estilos de texto a docenas de diferentes subelementos léxicos de sintaxis. Estos incluyen palabras clave, comentarios, declaraciones de flujo de control, variables y otros elementos. Los programadores a menudo personalizan en gran medida sus configuraciones en un intento de mostrar tanta información útil como sea posible sin hacer que el código sea difícil de leer.

Llamada decoración de sintaxis , algunos editores también muestran ciertos elementos sintácticos de formas más agradables visualmente, 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 con una presentación real en cursiva , negrita o subrayado .

Ejemplos de

A continuación se muestra una comparación de un fragmento de código C :

Representación estándar Resaltado de sintaxis
/* Hello World */
#include <stdlib.h>
#include <stdio.h>

int main()
{
    printf("Hello World\n");
    return 0;
}
/* Hello World */
#include <stdlib.h>
#include <stdio.h>

int main()
{
    printf("Hello World\n");
    return 0;
}

A continuación se muestra otro fragmento de código C ++ resaltado en sintaxis :

// Create "window_count" Window objects:
const auto window_count = int{10};
auto windows = std::array<std::shared_ptr<Window>, max_window_count>{};
for (auto i = int{0}; i < window_count; ++i) {
    windows[i] = std::make_shared<Window>();
}

En el ejemplo C ++, el editor ha reconocido las palabras clave const , auto, int, y for. El comentario al principio también se resalta de una manera específica para distinguirlo del código de trabajo.

Historia y limitaciones

Las ideas del resaltado de sintaxis se superponen significativamente con las de los editores dirigidos por la sintaxis . Uno de los primeros editores de código de este tipo fue el editor de código de Wilfred Hansen en 1969, Emily. 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 la creación de 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, que se utilizó en el periférico Entertainment Computer System (ECS) de Intellivision , lanzado en 1983. Destacaría diferentes elementos de programas BASIC y se implementó en un intento de facilitar que los principiantes, especialmente los niños, comiencen a escribir código. Más tarde, 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 el resaltado de sintaxis de color. Su capacidad de análisis en vivo permitió agregar analizadores proporcionados por el usuario al editor, para texto, programas, archivos de datos, etc. En microcomputadoras , MacPascal 1.0 (10 de octubre de 1985) reconoció la sintaxis de Pascal a medida que se escribía y usaba cambios de fuente (p. Ej. , negrita para palabras clave) para resaltar la sintaxis en el Macintosh compacto monocromático y el código sangrado automáticamente para que coincida con su estructura.

Algunos editores de texto y herramientas de formato de código realizan el resaltado de sintaxis utilizando heurísticas de coincidencia de patrones (por ejemplo, expresiones regulares ) en lugar de implementar un analizador para cada idioma posible. 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 con lentitud. Una solución utilizada por los editores de texto para superar este problema no siempre es analizar todo el archivo, 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 el código durante su creación, mientras está incompleto o incorrecto, y los analizadores estrictos (como los que se usan en los compiladores) fallarían al analizar el código la mayor parte del tiempo.

Algunos IDE modernos y específicos del 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. Una extensión del resaltado de sintaxis fue llamado "resaltado semántico" en 2009 por David Nolden para el IDE de código abierto C ++ KDevelop . Por ejemplo, el resaltado semántico puede dar a las variables locales colores distintos únicos para mejorar la comprensión del código. En 2014, la idea de las variables locales coloreadas se popularizó aún más debido a una publicación de blog de Evan Brooks, y después de eso, la idea se transfirió a otros IDE populares como Visual Studio , Xcode y otros.

El color en una interfaz de usuario es menos útil si el usuario tiene cierto grado de daltonismo .

Ver también

Referencias