Structure editor (original) (raw)
A structure editor, also structured editor or projectional editor, is any document editor that is cognizant of the document's underlying structure. Structure editors can be used to edit hierarchical or marked up text, computer programs, diagrams, chemical formulas, and any other type of content with clear and well-defined structure. In contrast, a text editor is any document editor used for editing plain text files.
Property | Value |
---|---|
dbo:abstract | A structure editor, also structured editor or projectional editor, is any document editor that is cognizant of the document's underlying structure. Structure editors can be used to edit hierarchical or marked up text, computer programs, diagrams, chemical formulas, and any other type of content with clear and well-defined structure. In contrast, a text editor is any document editor used for editing plain text files. Typically, the benefits of text and structure editing are combined in the user interface of a single hybrid tool. For example, Emacs is fundamentally a text editor, but supports the manipulation of words, sentences, and paragraphs as structures that are inferred from the text. Conversely, Dreamweaver is fundamentally a structure editor for marked up web documents, but supports the display and manipulation of raw HTML text as well. Similarly, molecule editors typically support both graphical and textual input. Structure editing predominates when content is graphical and textual representations are awkward, e.g., CAD systems and PowerPoint. Text editing predominates when content is largely devoid of structure, e.g., text fields in web forms. WYSIWYG word processing systems such as Word, which appear to edit formatted text directly, are essentially structure editors for the underlying marked-up text. In linguistics, syntax is the study of the structure of grammatical utterances, and accordingly syntax-directed editor is a synonym for structure editor. Language-based editor and language-sensitive editor are also synonyms. A language-based editor's features may be implemented by ad hoc code or by a formal grammar. For example, language sensitivity in Emacs is implemented in the Lisp definition of the edit mode for the given language. In contrast, language sensitivity in an XML editor is driven by a formal DTD schema for the given language. Although structured editors allow the viewing and manipulation of the underlying document in a structured manner, the file format in which the document is stored on disk may or may not be heavily structured and may or may not be open or standardized (e.g., plain text versus Microsoft Word documents). Structure editing has often been employed in source code editors, as source code is naturally structured by the syntax of the computer language. However, most source code editors are instead text editors with additional features such as syntax highlighting and code folding, rather than structure editors. The editors in some integrated development environments parse the source code and generate a parse tree, allowing the same analysis as by a structure editor, but the actual editing of the source code is generally done as raw text. Each programming language typically has a well-defined syntax given by a context-free grammar, and accordingly the meaningful structural elements in source code written in the language correspond to the grammatical phrases in the text. Early syntax-directed source code editors included Interlisp-D (for Lisp’s limited syntax) and Emily (for PL/I’s rich syntax). A syntax-directed editor may treat grammar rules as generative (e.g., offering the user templates that correspond to one or more steps in a formal derivation of program text) or proscriptive (e.g., preventing a phrase of a given part of speech from being moved to a context where another part of speech is required) or analytic (e.g., parsing textual edits to create a structured representation). Structure editing features in source code editors make it harder to write programs with invalid syntax. Language-sensitive editors may impose syntactic correctness as an absolute requirement (e.g., as did Mentor), or may tolerate syntax errors after issuing a warning (e.g., as did the Cornell Program Synthesizer). Strict structured editors often make it difficult to perform edits that are easy to perform with plain text editors, which is one of the factors contributing to the lack of adoption of structured editing in some domains, such as source code editing. Some syntax-directed editors monitor compliance with the context-sensitive constraints of a language such as type correctness. Such static-semantic constraints may be specified imperatively by actions (e.g., as in Gandalf), or declaratively by an attribute grammar (e.g., as in the Synthesizer Generator) or by unification in a many-sorted algebra (e.g., as in PSG ) or a logic program (e.g., as in Centaur and Pan), with compliance checked by the underlying editing machinery. Structured editors vary in the degree to which they allow their users to perform edits that cause the document to become syntactically or semantically incorrect. It is common for a language sensitive editor to represent a document as a parse tree with respect to language's grammar, or as an abstract syntax tree (AST). For example, a DOM tree is essentially an AST with respect to a given DTD. Frequently, the textual view of that underlying tree is generated by prettyprinting the underlying tree. Editors associated with intentional programming and language-oriented programming for general-purpose languages and domain-specific languages share many of the features of language-sensitive editors, but aim for greater separation between the underlying representation (the intention) and the surface representation (text in a programming language). (en) |
dbo:wikiPageID | 9697252 (xsd:integer) |
dbo:wikiPageLength | 10430 (xsd:nonNegativeInteger) |
dbo:wikiPageRevisionID | 1114438134 (xsd:integer) |
dbo:wikiPageWikiLink | dbr:Declarative_programming dbr:Intention dbr:Intentional_programming dbr:User_interface dbr:Compiler dbr:Context-free_grammar dbr:Generative_grammar dbr:Code_folding dbr:Emacs dbr:Context-sensitive_grammar dbr:Lexical_category dbr:Lisp_(programming_language) dbr:Computer-aided_design dbr:Computer_program dbr:Document_Type_Definition dbr:Structure dbr:JetBrains_MPS dbr:Language-oriented_programming dbr:Linguistics dbr:Logic_programming dbr:PL/I dbr:Diagram dbr:Formal_grammar dbr:Graphics dbr:Source_code dbr:Source_code_editor dbr:Text_editor dbr:XML_editor dbr:HTML dbr:Attribute_grammar dbr:Abstract_syntax_tree dbr:Chemical_formula dbr:Lapis_(text_editor) dbr:Syntax dbr:Homoiconicity dbr:Parse_tree dbr:Template_(word_processing) dbr:Text_file dbr:Document_object_model dbr:Domain-specific_languages dbc:Text_editor_features dbr:Phrases dbr:Source_Code_in_Database dbr:Integrated_development_environment dbr:Microsoft_Word dbr:Word_processors dbr:Syntax_highlighting dbr:Markup_language dbr:WYSIWYG dbr:Imperative_programming dbr:Programming_language dbr:Molecule_editor dbr:Syntax_error dbr:Dreamweaver dbr:Interlisp-D dbr:PowerPoint dbr:Prettyprinting dbr:Type_systems dbr:Wikt:text |
dbp:wikiPageUsesTemplate | dbt:Clarify dbt:Reflist |
dct:subject | dbc:Text_editor_features |
gold:hypernym | dbr:Cognizant |
rdf:type | yago:WikicatTextEditorFeatures yago:Abstraction100002137 yago:Cognition100023271 yago:Concept105835747 yago:Content105809192 yago:Feature105849789 yago:Idea105833840 yago:Property105849040 yago:PsychologicalFeature100023100 |
rdfs:comment | A structure editor, also structured editor or projectional editor, is any document editor that is cognizant of the document's underlying structure. Structure editors can be used to edit hierarchical or marked up text, computer programs, diagrams, chemical formulas, and any other type of content with clear and well-defined structure. In contrast, a text editor is any document editor used for editing plain text files. (en) |
rdfs:label | Structure editor (en) |
owl:sameAs | freebase:Structure editor yago-res:Structure editor wikidata:Structure editor https://global.dbpedia.org/id/4voHp |
prov:wasDerivedFrom | wikipedia-en:Structure_editor?oldid=1114438134&ns=0 |
foaf:isPrimaryTopicOf | wikipedia-en:Structure_editor |
is dbo:wikiPageRedirects of | dbr:Projectional_editing dbr:Projectional_editor dbr:Structured_editing dbr:Syntax-directed_editing dbr:Syntax-directed_editor dbr:Syntax_directed_editing dbr:Syntax_directed_editor dbr:Structural_editing dbr:Structural_editor dbr:Structure_editing dbr:Structured_Editor dbr:Structured_editor |
is dbo:wikiPageWikiLink of | dbr:Brad_Templeton dbr:Intentional_programming dbr:GNU_TeXmacs dbr:GrammaTech dbr:Projectional_editing dbr:Projectional_editor dbr:Domain-specific_language dbr:ABC_(programming_language) dbr:Frame-based_editor dbr:Lapis_(text_editor) dbr:Source_Code_in_Database dbr:Syntax_highlighting dbr:Subgraph_isomorphism_problem dbr:Source-code_editor dbr:Structured_editing dbr:Syntax-directed_editing dbr:Syntax-directed_editor dbr:Syntax_directed_editing dbr:Syntax_directed_editor dbr:Structural_editing dbr:Structural_editor dbr:Structure_editing dbr:Structured_Editor dbr:Structured_editor |
is foaf:primaryTopic of | wikipedia-en:Structure_editor |