Редактор структуры - Structure editor - Wikipedia

А редактор структуры, также структурированный редактор или же проекционный редактор, любой редактор документа, который знает, что документ структура. Редакторы структуры могут использоваться для редактирования иерархических или размечена текст, компьютерные программы, диаграммы, химические формулы, и любой другой тип контента с четкой и четко определенной структурой. Напротив, Текстовый редактор любой редактор документов, используемый для редактирования простого текстовые файлы.[требуется разъяснение ]

Обычно преимущества редактирования текста и структуры объединяются в пользовательский интерфейс одного гибридного инструмента. Например, Emacs по сути является текстовым редактором, но поддерживает манипуляции со словами, предложениями и абзацами как структурами, выведенными из текста. Наоборот, Dreamweaver по сути является редактором структуры для размеченных веб-документов, но поддерживает отображение и управление необработанными HTML текст тоже. По аналогии, редакторы молекул обычно поддерживают как графический, так и текстовый ввод. Редактирование структуры преобладает, когда контент графический и текстовые представления неудобны, например, CAD системы и Силовая установка. Редактирование текста преобладает, когда контент в значительной степени лишен структуры, например, текстовые поля в веб-формах. WYSIWYG системы обработки текста Такие как Слово, которые, кажется, непосредственно редактируют форматированный текст, по сути являются редакторами структуры для основного размеченного текста.

В лингвистика, синтаксис является изучение структуры грамматических высказываний, и соответственно синтаксически управляемый редактор является синонимом редактора структуры. Языковой редактор и редактор с учетом языка также являются синонимами. Возможности редактора на основе языка могут быть реализованы специальным кодом или формальная грамматика. Например, чувствительность к языку в Emacs реализована в Лисп определение режима редактирования для данного языка. Напротив, языковая чувствительность в Редактор XML движется формальным DTD схема для данного языка.

Хотя структурированные редакторы позволяют просматривать и управлять лежащим в основе документом структурированным образом, формат файла, в котором документ хранится на диске, может быть или не быть сильно структурированным и может быть или не быть открытым или стандартизированным (например, простой текст по сравнению с Документы Microsoft Word).

Редактирование структуры часто использовалось в редакторы исходного кода, поскольку исходный код естественно структурирован синтаксисом компьютерного языка. Однако большинство редакторов исходного кода - это текстовые редакторы с дополнительными функциями, такими как подсветка синтаксиса и сворачивание кода, а не редакторы структуры. Редакторы некоторых интегрированные среды разработки проанализировать исходный код и сгенерировать дерево синтаксического анализа, позволяющее проводить такой же анализ, как и с помощью редактора структуры, но фактическое редактирование исходного кода обычно выполняется как необработанный текст.

Каждый язык программирования обычно имеет четко определенный синтаксис, задаваемый контекстно-свободная грамматика, и, соответственно, значимые структурные элементы в исходный код написанные на языке соответствуют грамматическим фразы в тексте. Включены ранние редакторы исходного кода, ориентированные на синтаксис Интерлисп-Д (за Лисп Ограниченный синтаксис) и Эмили[1] (за PL / I Богатый синтаксис).

Редактор, ориентированный на синтаксис, может трактовать правила грамматики как генеративный (например, предлагая пользователю шаблоны которые соответствуют одному или нескольким шагам в формальном выводе текста программы) или запретительные (например, предотвращение фразы данного часть речи от перемещения в контекст, где требуется другая часть речи) или аналитического (например, анализ текстовых правок для создания структурированного представления). Функции редактирования структуры в редакторах исходного кода затрудняют написание программ с недопустимым синтаксисом. Редакторы, чувствительные к языку, могут предъявлять синтаксическую корректность как абсолютное требование (например, как это сделал Mentor[2]), или может терпеть синтаксические ошибки после выдачи предупреждения (например, как это сделал Корнельский программный синтезатор[3]). Редакторы со строгой структурой часто затрудняют выполнение редактирования, которое легко выполнить с помощью текстовых редакторов, что является одним из факторов, способствующих тому, что структурированное редактирование не внедряется в некоторых областях, например редактировании исходного кода.

Некоторые редакторы, ориентированные на синтаксис, следят за соблюдением контекстно-зависимый ограничения языка, такие как правильность типа. Такой статико-семантический ограничения могут быть указаны настоятельно действиями (например, как у Гэндальфа[4][5][6]), или же декларативно по грамматика атрибутов (например, как в синтезаторе-генераторе[7][8]) или объединением в многосортную алгебру (например, как в PSG [9]) или логическая программа (например, как в Centaur[10] и Пан[11]), с соблюдением требований, проверяемых базовым оборудованием редактирования. Структурированные редакторы различаются по степени, в которой они позволяют своим пользователям вносить изменения, которые приводят к тому, что документ становится синтаксически или семантически некорректным.

Редакторы, чувствительные к языку, часто представляют документ как дерево синтаксического анализа относительно грамматики языка, или как абстрактное синтаксическое дерево (АСТ). Например, ДОМ дерево по сути является AST по отношению к заданному DTD. Часто текстовое представление этого базового дерева генерируется красивая печать лежащее в основе дерево. Редакторы, связанные с преднамеренное программирование[12] и языковое программирование за языки общего назначения и предметно-ориентированные языки разделяют многие особенности редакторов, чувствительных к языку, но стремятся к большему разделению между базовым представлением ( намерение ) и представление поверхности (текст на языке программирования).

Примеры

  • JetBrains MPS
  • двойка: легкое структурированное редактирование в sketch-n-sketch[13]

Смотрите также

Рекомендации

  1. ^ Хансен, Уилфред Дж. (1971). «Принципы пользовательской инженерии интерактивных систем». Труды осенней совместной компьютерной конференции FJCC 39. AFIPS. С. 5623–532.
  2. ^ Donzeau Gouge, V .; Huet, G .; Kahn, G .; Ланг, Б. (июль 1980 г.). «Среды программирования на основе структурированных редакторов: опыт наставника» (PDF). INRIA Отчет об исследовании № 26.
  3. ^ Тейтельбаум, Т .; Т. Репс (Сентябрь 1981 г.). «Корнельский программный синтезатор: среда программирования, ориентированная на синтаксис». Коммуникации ACM. 24 (9): 563–573. Дои:10.1145/358746.358755.
  4. ^ Хаберманн, А. Нико; Ноткин, Дэвид (1986). "Гэндальф: Среда разработки программного обеспечения" (PDF). IEEE Trans. Софтв. Англ.. 12 (12): 1117–1127.
  5. ^ Медина Мора, Рауль (1982). Редактирование, направленное на синтаксис - для интеграции сред программирования. Питтсбург, Пенсильвания: Университет Карнеги-Меллона (докторская диссертация).
  6. ^ Кайзер, Гейл Элейн (1985). Семантика сред редактирования структур. Питтсбург, Пенсильвания: Университет Карнеги-Меллона (докторская диссертация).
  7. ^ Репс, Т. (1984). Создание языковых сред. Кембридж, Массачусетс: M.I.T. Нажмите. (Награжден 1983 г. ACM Премия за докторскую диссертацию.).
  8. ^ Представители Thomas W.; Тейтельбаум, Тим (1988). Генератор синтезатора: система для создания редакторов на основе языка. Кембридж, Массачусетс: Springer-Verlag.
  9. ^ Снелтинг, Грегор; Хенхапл, Вольфганг (1986). «Унификация в многосортных алгебрах как средство инкрементального семантического анализа». Материалы 13-го симпозиума ACM SIGACT-SIGPLAN по принципам языков программирования (POPL). Нью-Йорк, штат Нью-Йорк: ACM Press. С. 229–235.
  10. ^ Borras, P .; Clement, D .; Despeyrouz, Th .; Incerpi, J .; Kahn, G .; Lang, B .; Паскуаль, В. (1989). «КЕНТАВР: Система». "Материалы симпозиума по разработке программного обеспечения ACM SIGSOFT / SIGPLAN по практическим средам разработки программного обеспечения (PSDE). 24. Нью-Йорк, штат Нью-Йорк: ACM Press. С. 14–24.
  11. ^ Ballance, Роберт А.; Graham, Susan L .; Ван Де Вантер, Майкл Л. (1990). «Панъязыковая система редактирования для комплексной разработки». SDE 4: Материалы четвертого симпозиума ACM SIGSOFT по средам разработки программного обеспечения. Ирвин, Калифорния: ACM Press. С. 77–93.
  12. ^ Чарнецкий, Кшиштоф и Эйзенекер, Ульрих (июнь 2000 г.). Генеративное программирование: методы, инструменты и приложения, глава 11 (Преднамеренное программирование). Ридинг, Массачусетс: Эддисон-Уэсли.
  13. ^ https://ravichugh.github.io/sketch-n-sketch/blog/05-deuce.html

внешняя ссылка