Структура редактор , а также структурированный редактор или Проекционно редактор , является любым редактором документа , который осведомлен о нижележащем документе структуры . Редакторы структуры могут использоваться для редактирования иерархического или размеченного текста , компьютерных программ , диаграмм , химических формул и любого другого типа контента с четкой и четко определенной структурой. Напротив, текстовый редактор - это любой редактор документов, используемый для редактирования текстовых файлов . [ требуется разъяснение ]
Обычно преимущества редактирования текста и структуры объединены в пользовательском интерфейсе единого гибридного инструмента. Например, Emacs, по сути, является текстовым редактором, но поддерживает манипулирование словами, предложениями и абзацами как структурами, выводимыми из текста. И наоборот, Dreamweaver по сути является редактором структуры для размеченных веб-документов, но также поддерживает отображение необработанного текста HTML и управление им. Точно так же редакторы молекул обычно поддерживают как графический, так и текстовый ввод. Редактирование структуры преобладает, когда контент является графическим, а текстовые представления неудобны, например, в системах САПР и PowerPoint.. Редактирование текста преобладает, когда контент в значительной степени лишен структуры, например, текстовые поля в веб-формах. Системы обработки текста WYSIWYG , такие как Word , которые, кажется, редактируют форматированный текст напрямую, по сути, являются редакторами структуры для основного размеченного текста.
В лингвистике , синтаксис является изучение структуры грамматических высказываний, и , соответственно , синтаксис-направленный редактор является синонимом структуры редактора. Языковой редактор и языковой редактор также являются синонимами. Возможности языкового редактора могут быть реализованы с помощью специального кода или формальной грамматики . Например, чувствительность к языку в Emacs реализована в определении Lisp режима редактирования для данного языка. Напротив, чувствительность к языку в редакторе XML определяется формальной схемой DTD для данного языка.
Хотя структурированные редакторы позволяют просматривать и управлять лежащим в основе документом структурированным образом, формат файла, в котором документ хранится на диске, может быть или не быть сильно структурированным и может быть или не быть открытым или стандартизованным (например, простой текст по сравнению с Документы Microsoft Word).
Редактирование структуры часто используется в редакторах исходного кода , поскольку исходный код естественным образом структурирован синтаксисом компьютерного языка. Однако большинство редакторов исходного кода - это текстовые редакторы с дополнительными функциями, такими как подсветка синтаксиса и сворачивание кода , а не редакторы структуры. Редакторы в некоторых интегрированных средах разработки анализируют исходный код и генерируют дерево синтаксического анализа, позволяя проводить тот же анализ, что и с помощью редактора структуры, но фактическое редактирование исходного кода обычно выполняется в виде необработанного текста.
Каждый язык программирования обычно имеет четко определенный синтаксис, задаваемый контекстно-свободной грамматикой , и, соответственно, значимые структурные элементы в исходном коде, написанном на этом языке, соответствуют грамматическим фразам в тексте. Ранние редакторы исходного кода, ориентированные на синтаксис, включали Interlisp-D (для ограниченного синтаксиса Lisp ) и Emily [1] (для богатого синтаксиса PL / I ).
Редактор, ориентированный на синтаксис, может рассматривать правила грамматики как генеративные (например, предлагая пользовательские шаблоны, которые соответствуют одному или нескольким шагам в формальном выводе текста программы) или как запретительные (например, предотвращение перемещения фразы из данной части речи. в контекст, где требуется другая часть речи) или аналитический (например, анализ текстовых правок для создания структурированного представления). Функции редактирования структуры в редакторах исходного кода затрудняют написание программ с недопустимым синтаксисом. Редакторы, чувствительные к языку, могут предъявлять синтаксическую корректность как абсолютное требование (например, как Mentor [2] ) или могут допускать синтаксические ошибки после выдачи предупреждения (например, как это сделал Cornell Program Synthesizer[3] ). Редакторы со строгой структурой часто затрудняют выполнение правок, которые легко выполнить с помощью текстовых редакторов, что является одним из факторов, способствующих тому, что структурированное редактирование не применяется в некоторых областях, таких как редактирование исходного кода.
Некоторые редакторы, ориентированные на синтаксис, следят за соблюдением контекстно-зависимых ограничений языка, таких как правильность типов . Такие статико-семантические ограничения могут быть указаны императивно с помощью действий (например, как в Gandalf [4] [5] [6] ), или декларативно с помощью грамматики атрибутов (например, как в генераторе синтезатора [7] [8] ) или путем объединения в многосортную алгебру (например, как в PSG [9] ) или логическую программу (например, как в Centaur [10] и Pan [11]), с соблюдением требований, проверяемых базовым оборудованием редактирования. Структурированные редакторы различаются по степени, в которой они позволяют своим пользователям вносить изменения, которые приводят к тому, что документ становится синтаксически или семантически некорректным.
Редактор, чувствительный к языку, обычно представляет документ как дерево синтаксического анализа по отношению к грамматике языка или как абстрактное синтаксическое дерево (AST). Например, дерево DOM - это, по сути, AST по отношению к данному DTD . Часто текстовое представление этого базового дерева создается путем красивой печати базового дерева. Редакторы, связанные с преднамеренным программированием [12] и языково-ориентированным программированием для языков общего назначения и предметно-ориентированных языков.разделяют многие особенности редакторов, чувствительных к языку, но стремятся к большему разделению между базовым представлением ( намерением ) и поверхностным представлением (текстом на языке программирования).
Использование внешних ссылок в этой статье может не соответствовать политикам или рекомендациям Википедии . ( Ноябрь 2014 г. ) |