Editor de estructura - Structure editor

Un editor de estructuras , también un editor estructurado o un editor proyectivo , es cualquier editor de documentos que conoce la estructura subyacente del documento . Estructura editores pueden utilizar para editar jerárquica o remarcados de texto , programas de ordenador , diagramas , fórmulas químicas , y cualquier otro tipo de contenido con una estructura clara y bien definida. Por el contrario, un editor de texto es cualquier editor de documentos que se utiliza para editar archivos de texto sin formato .

Normalmente, los beneficios de la edición de texto y estructura se combinan en la interfaz de usuario de una única herramienta híbrida. Por ejemplo, Emacs es fundamentalmente un editor de texto, pero admite la manipulación de palabras, oraciones y párrafos como estructuras que se infieren del texto. Por el contrario, Dreamweaver es fundamentalmente un editor de estructura para documentos web marcados, pero también admite la visualización y manipulación de texto HTML sin formato. Del mismo modo, los editores de moléculas suelen admitir entradas tanto gráficas como textuales. La edición de estructuras predomina cuando el contenido es gráfico y las representaciones textuales son incómodas, por ejemplo, sistemas CAD y PowerPoint . La edición de texto predomina cuando el contenido carece en gran medida de estructura, por ejemplo, campos de texto en formularios web. Los sistemas de procesamiento de texto WYSIWYG como Word , que parecen editar directamente texto formateado, son esencialmente editores de estructura para el texto marcado subyacente.

En lingüística , la sintaxis es el estudio de la estructura de las expresiones gramaticales y, en consecuencia , editor dirigido por sintaxis es sinónimo de editor de estructura. Editor basado en el lenguaje y editor de lenguaje sensible también son sinónimos. Las funciones de un editor basado en el lenguaje pueden implementarse mediante un código ad hoc o mediante una gramática formal . Por ejemplo, la sensibilidad del lenguaje en Emacs se implementa en la definición Lisp del modo de edición para el lenguaje dado. Por el contrario, la sensibilidad del lenguaje en un editor XML está impulsada por un esquema DTD formal para el lenguaje dado.

Aunque los editores estructurados permiten la visualización y manipulación del documento subyacente de una manera estructurada, el formato de archivo en el que se almacena el documento en el disco puede o no estar muy estructurado y puede estar abierto o estandarizado o no (p. Ej., Texto sin formato versus Documentos de Microsoft Word).

La edición de estructuras se ha empleado a menudo en los editores de código fuente , ya que el código fuente está estructurado naturalmente por la sintaxis del lenguaje informático. Sin embargo, la mayoría de los editores de código fuente son editores de texto con características adicionales como resaltado de sintaxis y plegado de código , en lugar de editores de estructura. Los editores en algunos entornos de desarrollo integrados analizan el código fuente y generan un árbol de análisis, lo que permite el mismo análisis que un editor de estructura, pero la edición real del código fuente generalmente se realiza como texto sin formato.

Cada lenguaje de programación normalmente tiene una sintaxis bien definida dada por una gramática libre de contexto y, en consecuencia, los elementos estructurales significativos en el código fuente escrito en el lenguaje corresponden a las frases gramaticales del texto. Los primeros editores de código fuente dirigidos por sintaxis incluían Interlisp-D (para la sintaxis limitada de Lisp ) y Emily (para la rica sintaxis de PL / I ).

Un editor dirigido por sintaxis puede tratar las reglas gramaticales como generativas (p. Ej., Ofrecer al usuario plantillas que corresponden a uno o más pasos en una derivación formal del texto del programa) o proscriptivas (p. Ej., Evitar que se mueva una frase de una parte determinada del discurso a un contexto donde se requiere otra parte del discurso) o analítico (por ejemplo, analizar ediciones textuales para crear una representación estructurada). Las funciones de edición de estructuras en los editores de código fuente dificultan la escritura de programas con sintaxis no válida. Los editores sensibles al lenguaje pueden imponer la corrección sintáctica como un requisito absoluto (por ejemplo, como hizo Mentor), o pueden tolerar errores de sintaxis después de emitir una advertencia (por ejemplo, como hizo el Sintetizador de programas de Cornell). Los editores estructurados estrictos a menudo dificultan la realización de ediciones que son fáciles de realizar con editores de texto sin formato, que es uno de los factores que contribuyen a la falta de adopción de la edición estructurada en algunos dominios, como la edición del código fuente.

Algunos editores dirigidos por la sintaxis supervisan el cumplimiento de las restricciones sensibles al contexto de un lenguaje, como la corrección de tipos . Tales restricciones estáticas-semánticas pueden ser especificadas imperativamente por acciones (por ejemplo, como en Gandalf), o declarativamente por una gramática de atributos (por ejemplo, como en el Generador de sintetizadores) o por unificación en un álgebra de muchos ordenamientos (por ejemplo, como en PSG). o un programa lógico (por ejemplo, como en Centaur y Pan), con el cumplimiento verificado por la maquinaria de edición subyacente. Los editores estructurados varían en el grado en que permiten a sus usuarios realizar ediciones que hacen que el documento se vuelva sintáctica o semánticamente incorrecto.

Es común que un editor sensible al lenguaje represente un documento como un árbol de análisis con respecto a la gramática del lenguaje, o como un árbol de sintaxis abstracta (AST). Por ejemplo, un árbol DOM es esencialmente un AST con respecto a una DTD determinada . Con frecuencia, la vista textual de ese árbol subyacente se genera imprimiendo bastante el árbol subyacente. Editores asociados a la programación intencional y programación orientada lenguaje de lenguajes de propósito general y lenguajes específicos de dominio comparten muchas de las características de los editores sensibles al idioma, pero apuntan a una mayor separación entre la representación subyacente (la intención ) y la representación de la superficie (texto en un lenguaje de programación).

Ejemplos de

Ver también

Referencias

enlaces externos