Редактор структуры


Из Википедии, бесплатной энциклопедии
  (Перенаправлено из Структурного редактора )
Перейти к навигации Перейти к поиску

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

Обычно преимущества редактирования текста и структуры объединены в пользовательском интерфейсе единого гибридного инструмента. Например, 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] и языково-ориентированным программированием для языков общего назначения и предметно-ориентированных языков.разделяют многие особенности редакторов, чувствительных к языку, но стремятся к большему разделению между базовым представлением ( намерением ) и поверхностным представлением (текстом на языке программирования).

Примеры

  • JetBrains MPS
  • Lapis (текстовый редактор) : редактирование текста с облегченной структурой

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

  • Редактор исходного кода
  • Исходный код в базе данных
  • Гомоиконность

использованная литература

  1. ^ Хансен, Уилфред Дж. (1971). «Принципы пользовательской инженерии интерактивных систем». Труды осенней совместной компьютерной конференции FJCC 39 . AFIPS. С. 5623–532.
  2. ^ Donzeau Gouge, V .; Huet, G .; Kahn, G .; Ланг, Б. (июль 1980 г.). «Среды программирования на основе структурированных редакторов: опыт наставника» (PDF) . Отчет INRIA Research No. 26 .
  3. ^ Тейтельбаум, Т .; Т. Репс (сентябрь 1981 г.). «Корнельский программный синтезатор: среда программирования, ориентированная на синтаксис». Коммуникации ACM . 24 (9): 563–573. DOI : 10.1145 / 358746.358755 .
  4. ^ Хаберманн, А. Нико; Ноткин, Дэвид (1986). «Гэндальф: среды разработки программного обеспечения» (PDF) . IEEE Trans. Софтв. Англ . 12 (12): 1117–1127.
  5. Медина Мора, Рауль (1982). Редактирование, направленное на синтаксис - для интеграции сред программирования . Питтсбург, Пенсильвания: Университет Карнеги-Меллона (докторская диссертация).
  6. ^ Кайзер, Гейл Элейн (1985). Семантика сред редактирования структур . Питтсбург, Пенсильвания: Университет Карнеги-Меллона (докторская диссертация).
  7. ^ Репс, Т. (1984). Создание языковых сред . Кембридж, Массачусетс: MIT Press. (Награжден докторской премией ACM 1983 г. ).
  8. ^ Представители, Томас В .; Тейтельбаум, Тим (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. ^ Балланс, Роберт А.; Graham, Susan L .; Ван Де Вантер, Майкл Л. (1990). «Пан-языковая система редактирования для комплексной разработки». SDE 4: Материалы четвертого симпозиума ACM SIGSOFT по средам разработки программного обеспечения . Ирвин, Калифорния: ACM Press. С. 77–93.
  12. ^ Чарнецкий, Кшиштоф & Eisenecker, Ulrich (июнь 2000). Генеративное программирование: методы, инструменты и приложения, Глава 11 (Преднамеренное программирование) . Ридинг, Массачусетс: Эддисон-Уэсли.

внешние ссылки

  • «Редактор иерархической структуры для веб-сайтов», Самир Арора и др .; Номер патента: 5911145. Дата подачи: 29 июля 1996 г. Дата выдачи: 8 июня 1999 г.
  • Разработка, внедрение и интеграция редактора структурированного кода C #.
  • Исследования в структурированных редакторах
  • Интерфейс программирования graPHIGS: понимание концепций
  • Язык программирования и среда Lava
  • Бариста, структурированный редактор, созданный в рамках проекта естественного программирования Университета Карнеги-Меллона.
  • Алиса, структурированный редактор, предоставленный колледжам и университетам Университетом Карнеги-Меллона
  • Code Views, структурированный редактор для Java от Reality Interactive
  • Code Processor (также известный как Program Editor Architecture), структурированный редактор для Java Майкла Л. Ван Де Вантера и Марата Бошерницана.
  • Среда визуального функционального программирования (VFPE), докторская диссертация Джоэла Келсо, в которой используются структурированные редакторы
  • «Структурные редакторы, IDE и еще одно воспоминание о Лиспе», авторское мнение Престона Л. Баннистера о структурированном редактировании.
  • «Изучение глубокой структуры кода», статья Джона Уделла о структурированном редактировании в Java с помощью Eclipse IDE.
  • «О полезности редакторов, управляемых синтаксисом», статья Бернарда Лэнга о преимуществах и недостатках структурированного редактирования с использованием системы Mentor INRIA.
  • Мартин Фаулер: языковые рабочие места
  • Структурированные презентации редакторов и публикации Лутца Родера
  • ПрограммаДерево
  • Подтекст
  • Уидби может пропустить следующую революцию в кодировании
  • PureBuilder
  • The Larch Environment - редактор структурированного исходного кода для Python
  • Grasp, облачная платформа для публикации структурированных редакторов и генераторов кода
  • двойка: легкое структурированное редактирование в sketch-n-sketch
Источник « https://en.wikipedia.org/w/index.php?title=Structure_editor&oldid=1048616432 »