Редактор структуры
Редактор структуры , также структурированный редактор или проекционный редактор документа , — это любой редактор документов, который знает основную структуру . Редакторы структур можно использовать для редактирования иерархического или размеченного текста , компьютерных программ , диаграмм , химических формул и любого другого типа контента с четкой и четко определенной структурой. Напротив, текстовый редактор — это любой редактор документов, используемый для редактирования простых текстовых файлов . [ нужны разъяснения ]
Обычно преимущества редактирования текста и структуры сочетаются в пользовательском интерфейсе одного гибридного инструмента. Например, Emacs по своей сути является текстовым редактором, но поддерживает манипулирование словами, предложениями и абзацами как структурами, выводимыми из текста. И наоборот, Dreamweaver по сути является редактором структуры размеченных веб-документов, но поддерживает отображение и обработку необработанного HTML- также текста. Аналогично, редакторы молекул обычно поддерживают как графический, так и текстовый ввод. Редактирование структуры преобладает, когда контент графический , а текстовые представления неудобны, например, в системах CAD и PowerPoint . Редактирование текста преобладает, когда контент в значительной степени лишен структуры, например текстовые поля в веб-формах. WYSIWYG, Системы обработки текста такие как Word , которые, по-видимому, предназначены для непосредственного редактирования форматированного текста, по сути являются структурными редакторами для основного размеченного текста.
В лингвистике синтаксически - синтаксис – это изучение структуры грамматических высказываний, и соответственно ориентированный редактор – это синоним структурного редактора. Языковой редактор и языково-зависимый редактор также являются синонимами. Функции языкового редактора могут быть реализованы с помощью специального кода или формальной грамматики . Например, чувствительность к языку в Emacs реализована в определении Lisp режима редактирования для данного языка. Напротив, чувствительность к языку в редакторе XML определяется формальной схемой DTD для данного языка.
Хотя структурированные редакторы позволяют просматривать и манипулировать базовым документом в структурированном виде, формат файла, в котором документ хранится на диске, может быть или не быть сильно структурированным и может быть или не быть открытым или стандартизированным (например, простой текст вместо документы Microsoft Word).
Редактирование структуры часто используется в редакторах исходного кода , поскольку исходный код естественным образом структурируется в соответствии с синтаксисом компьютерного языка. Однако большинство редакторов исходного кода представляют собой текстовые редакторы с дополнительными функциями, такими как подсветка синтаксиса и свертывание кода , а не редакторы структуры. Редакторы в некоторых интегрированных средах разработки анализируют исходный код и генерируют дерево разбора, позволяя проводить тот же анализ, что и редактор структуры, но фактическое редактирование исходного кода обычно выполняется в виде необработанного текста.
Каждый язык программирования обычно имеет четко определенный синтаксис, заданный контекстно-свободной грамматикой , и, соответственно, значимые структурные элементы в исходном коде, написанном на этом языке, соответствуют грамматическим фразам в тексте. Ранние редакторы исходного кода, ориентированные на синтаксис, включали Interlisp-D (для Emily ограниченного синтаксиса Lisp) и [1] (для PL/I богатого синтаксиса ).
Редактор, управляемый синтаксисом, может рассматривать грамматические правила как порождающие (например, предлагающие пользователю шаблоны , соответствующие одному или нескольким шагам формального создания текста программы) или запрещающие (например, предотвращающие фразы данной части речи). перемещение в контекст, где требуется другая часть речи) или аналитический (например, анализ текстовых правок для создания структурированного представления). Функции редактирования структуры в редакторах исходного кода усложняют написание программ с неверным синтаксисом. Редакторы, чувствительные к языку, могут предъявлять синтаксическую правильность как абсолютное требование (например, как это сделал Mentor [2] ), или может допускать синтаксические ошибки после выдачи предупреждения (например, как это сделал Корнельский программный синтезатор [3] ). Редакторы со строгой структурой часто затрудняют редактирование, которое легко выполнить с помощью текстовых редакторов, что является одним из факторов, способствующих недостаточному внедрению структурированного редактирования в некоторых областях, таких как редактирование исходного кода.
Некоторые редакторы, ориентированные на синтаксис, контролируют соблюдение контекстно-зависимых ограничений языка, таких как правильность типов . Такие статико-семантические ограничения могут быть императивно заданы действиями (например, как в «Гэндальфе»). [4] [5] [6] ) или декларативно с помощью грамматики атрибутов (например, как в генераторе синтезатора [7] [8] ) или объединением в многосортной алгебре (например, как в PSG [9] ) или логическую программу (например, как в Centaur [10] и Пан [11] ), при этом соответствие проверяется с помощью основного механизма редактирования. Структурированные редакторы различаются по степени, в которой они позволяют пользователям вносить изменения, которые приводят к тому, что документ становится синтаксически или семантически неверным.
Редактор, чувствительный к языку, обычно представляет документ в виде дерева синтаксического анализа с учетом грамматики языка или в виде абстрактного синтаксического дерева (AST). Например, дерево DOM по сути является AST по отношению к данному DTD . Часто текстовое представление этого базового дерева создается путем красивой печати базового дерева. Редакторы, связанные с намеренным программированием [12] и языково-ориентированное программирование для языков общего назначения и предметно-ориентированных языков имеют многие особенности языково-зависимых редакторов, но стремятся к большему разделению между базовым представлением ( намерением ) и поверхностным представлением (текстом на языке программирования). .
Примеры
[ редактировать ]- ДжетБрэйнс МПС
- Lapis (текстовый редактор) : редактирование текста с облегченной структурой
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Хансен, Уилфред Дж. (1971). «Принципы пользовательской разработки интерактивных систем». Материалы осенней совместной компьютерной конференции FJCC 39 . АФИПС. стр. 5623–532.
- ^ Донзо Гуж, В.; Хют, Г.; Кан, Г.; Ланг, Б. (июль 1980 г.). «Среды программирования на основе структурированных редакторов: опыт Mentor» (PDF) . INRIA Отчет об исследовании №. 26 .
- ^ Тейтельбаум, Т.; Т. Репс (сентябрь 1981 г.). «Программный синтезатор Корнелла: среда синтаксически-ориентированного программирования» . Коммуникации АКМ . 24 (9): 563–573. дои : 10.1145/358746.358755 .
- ^ Хаберманн, А. Нико; Ноткин, Дэвид (1986). «Гэндальф: Среды разработки программного обеспечения» (PDF) . IEEE Транс. англ . 12 (12): 1117–1127. дои : 10.1109/TSE.1986.6313007 . S2CID 11474349 .
- ^ Медина Мора, Рауль (1982). Редактирование, ориентированное на синтаксис: путь к интеграции сред программирования . Питтсбург, Пенсильвания: Университет Карнеги-Меллона (докторская диссертация).
- ^ Кайзер, Гейл Элейн (1985). Семантика сред редактирования структуры . Питтсбург, Пенсильвания: Университет Карнеги-Меллона (докторская диссертация).
- ^ Репс, Т. (1984). Создание языковой среды . Кембридж, Массачусетс: MIT Press. (Награжден премией за докторскую диссертацию ACM 1983 года .).
- ^ Репс, Томас В .; Тейтельбаум, Тим (1988). Генератор синтезатора: система создания языковых редакторов . Кембридж, Массачусетс: Springer-Verlag.
- ^ Снелтинг, Грегор; Хенхапл, Вольфганг (1986). «Объединение в многосортных алгебрах как средство инкрементного семантического анализа». Материалы 13-го симпозиума ACM SIGACT-SIGPLAN по принципам языков программирования (POPL) . Нью-Йорк, штат Нью-Йорк: ACM Press. стр. 229–235.
- ^ Боррас, П.; Клемент, Д.; Деспейруз, Т.; Инчерпи, Дж.; Кан, Г.; Ланг, Б.; Паскуаль, В. (1989). «КЕНТАВР: Система». «Материалы симпозиума по разработке программного обеспечения ACM SIGSOFT/SIGPLAN по практическим средам разработки программного обеспечения (PSDE) . Том 24. Нью-Йорк, Нью-Йорк: ACM Press. стр. 14–24.
- ^ Балланс, Роберт А.; Грэм, Сьюзен Л.; Ван Де Вантер, Майкл Л. (1990). «Пан-языковая система редактирования для комплексной разработки». SDE 4: Материалы четвертого симпозиума ACM SIGSOFT по средам разработки программного обеспечения . Ирвин, Калифорния: ACM Press. стр. 77–93.
- ^ Чарнецкий, Кшиштоф и Эйзенекер, Ульрих (июнь 2000 г.). Генеративное программирование: методы, инструменты и приложения, глава 11 (преднамеренное программирование) . Ридинг, Массачусетс: Аддисон-Уэсли.