stringtranslate.com

Resaltado de sintaxis

Resaltado de sintaxis HTML

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.

Beneficios prácticos

Resaltando el efecto de la falta de delimitador (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 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.

Soporte en editores de texto

gedit admite resaltado de sintaxis

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.

Elementos de sintaxis

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 .

Ejemplos

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, inty for. El comentario al principio también está resaltado de una manera específica para distinguirlo del código de trabajo.

Historia y limitaciones

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 .

Ver también

Referencias

  1. ^ Jim D'Anjou; Jerez Shavor; Scott Fairbrother; Dan Kehn; John Kellerman; Pat McCarthy (2005). La guía para desarrolladores de Java para Eclipse (2ª ed.). Boston: Addison-Wesley. ISBN 978-0-321-30502-2.
  2. ^ Sarkar, Advait (2015). "El impacto de la coloración de sintaxis en la comprensión de programas". Actas de la 26ª Conferencia Anual del Grupo de Interés en Psicología de la Programación : 49–58. Archivado desde el original el 24 de septiembre de 2015 . Consultado el 27 de septiembre de 2023 .
  3. ^ Hansen, Wilfred J. (1971). "Principios de ingeniería de usuario para sistemas interactivos". Actas de la conferencia informática conjunta de otoño FJCC 39 . AFIPS. págs. 5623–532.
  4. ^ Hansen, Wilfred. "Emily: editora de texto estructurado" . Consultado el 17 de junio de 2013 .
  5. ^ Método y aparato de corrección de errores de sintaxis, 29 de octubre de 1982 , consultado el 12 de abril de 2018
  6. ^ Mattel Intellivision: Guía del propietario del módulo de computadora Intellivision (1983) (Mattel) (EE. UU.). 1983.
  7. ^ "Sistema informático de entretenimiento / sistema de videojuegos clásico Intellivision". www.intellivisionlives.com . Archivado desde el original el 17 de julio de 2018 . Consultado el 12 de abril de 2018 .
  8. ^ Cowlishaw, MF (1987). "LEXX: un editor estructurado programable" (PDF) . IBM Journal of Research and Development, Vol 31, No. 1, número de pedido de reimpresión de IBM G322-0151 . IBM.
  9. ^ Allen, Dan (10 de octubre de 2011). "Un trío de recuerdos históricos". mpw-dev (lista de correo). Archivado desde el original el 21 de agosto de 2017 . Consultado el 12 de septiembre de 2019 .
  10. ^ "Archivos de definición de lenguaje KEDIT". Kedit . Mansfield Software Group, Inc. 2012 . Consultado el 7 de abril de 2016 .
  11. ^ "Publicación de blog de 2009 sobre resaltado semántico presentada en KDevelop por David Nolden". 8 de enero de 2009.
  12. ^ "Publicación de blog de 2014 sobre resaltado semántico de Evan Brooks". 17 de abril de 2017.
  13. ^ "Artículo de la revista Visual Studio sobre resaltado semántico".
  14. ^ "Página de Github de un complemento que implementa resaltado semántico para Xcode". GitHub . 14 de septiembre de 2022.