Edytor struktury
Edytor struktury , także edytor strukturalny lub edytor projekcyjny , to każdy edytor dokumentu, który jest świadomy podstawowej struktury dokumentu . Edytory struktury mogą być używane do edycji tekstu hierarchicznego lub ze znacznikami , programów komputerowych , diagramów , wzorów chemicznych i każdego innego rodzaju treści o jasnej i dobrze zdefiniowanej strukturze. Z kolei edytor tekstu to dowolny edytor dokumentów służący do edytowania zwykłych plików tekstowych . [ wymagane wyjaśnienie ]
Zazwyczaj zalety edycji tekstu i struktury są połączone w interfejsie użytkownika jednego narzędzia hybrydowego. Na przykład Emacs jest zasadniczo edytorem tekstu, ale obsługuje manipulowanie słowami, zdaniami i akapitami jako strukturami wywnioskowanymi z tekstu. I odwrotnie, Dreamweaver jest zasadniczo edytorem struktury dla dokumentów internetowych ze znacznikami, ale obsługuje również wyświetlanie i manipulowanie nieprzetworzonym tekstem HTML . Podobnie edytory molekuł zazwyczaj obsługują zarówno graficzne, jak i tekstowe wprowadzanie danych. Edycja struktury dominuje, gdy zawartość jest graficzne i tekstowe są niewygodne, np. systemy CAD i PowerPoint . Edycja tekstu przeważa, gdy treść jest w dużej mierze pozbawiona struktury, np. pola tekstowe w formularzach internetowych. Systemy przetwarzania tekstu typu WYSIWYG , takie jak Word , które wydają się bezpośrednio edytować sformatowany tekst, są zasadniczo edytorami struktury dla bazowego zaznaczonego tekstu.
W językoznawstwie składnia jest badaniem struktury wypowiedzi gramatycznych, a zatem edytor sterowany składnią jest synonimem edytora struktury . Edytor oparty na języku i edytor wrażliwy na język to także synonimy. Funkcje edytora opartego na języku mogą być implementowane przez kod ad hoc lub formalną gramatykę . Na przykład wrażliwość językowa w Emacsie jest zaimplementowana w Lispa dla danego języka. Natomiast wrażliwość językowa w edytorze XML jest sterowany formalnym schematem DTD dla danego języka.
Chociaż edytory strukturalne umożliwiają przeglądanie i manipulowanie podstawowymi dokumentami w uporządkowany sposób, format pliku, w którym dokument jest przechowywany na dysku, może, ale nie musi, być silnie ustrukturyzowany i może, ale nie musi, być otwarty lub ustandaryzowany (np. dokumenty Microsoft Word).
Edycja struktury była często stosowana w edytorach kodu źródłowego , ponieważ kod źródłowy jest naturalnie uporządkowany przez składnię języka komputerowego. Jednak większość edytorów kodu źródłowego to edytory tekstu z dodatkowymi funkcjami, takimi jak podświetlanie składni i składanie kodu , zamiast edytorów struktur. Edytory w niektórych zintegrowanych środowiskach programistycznych analizują kod źródłowy i generują drzewo analizy, umożliwiając taką samą analizę, jak w przypadku edytora struktury, ale faktyczna edycja kodu źródłowego jest zwykle wykonywana jako nieprzetworzony tekst.
Każdy język programowania ma zwykle dobrze zdefiniowaną składnię określoną przez gramatykę bezkontekstową , a zatem znaczące elementy strukturalne w kodzie źródłowym napisanym w języku odpowiadają frazom gramatycznym w tekście. Wczesne edytory kodu źródłowego sterowane składnią obejmowały Interlisp-D (dla ograniczonej składni Lispa) i Emily (dla bogatej składni PL/I ).
Redaktor kierujący się składnią może traktować reguły gramatyczne jako generatywne (np. oferując użytkownikowi szablony , które odpowiadają jednemu lub kilku krokom w formalnym wyprowadzeniu tekstu programu) lub zakazujące (np. zapobiegając wyrażeniu danej części mowy przed przeniesieniem do kontekstu, w którym wymagana jest inna część mowy) lub analityczne (np. parsowanie edycji tekstu w celu stworzenia ustrukturyzowanej reprezentacji). Funkcje edycji struktury w edytorach kodu źródłowego utrudniają pisanie programów z nieprawidłową składnią. Redaktorzy wrażliwi na język mogą narzucać poprawność składniową jako absolutny wymóg (np. tak jak Mentor) lub mogą tolerować błędy składniowe po wydaniu ostrzeżenia (np. tak jak zrobił to Cornell Program Synthesizer). Ścisłe edytory strukturalne często utrudniają przeprowadzanie edycji, które są łatwe do wykonania w edytorach zwykłego tekstu, co jest jednym z czynników przyczyniających się do braku przyjęcia edycji strukturalnej w niektórych domenach, takich jak edycja kodu źródłowego.
Niektóre edytory sterowane składnią monitorują zgodność z kontekstowymi ograniczeniami języka, takimi jak poprawność typu . Takie statyczno-semantyczne mogą być określone imperatywnie przez działania (np. jak u Gandalfa) lub deklaratywnie przez gramatykę atrybutów (np. w generatorze syntezatora) lub przez unifikację w algebrze wielokrotnego sortowania (np. w PSG). lub program logiczny (np. jak w Centaur i Pan), przy czym zgodność sprawdzana jest przez podstawową maszynerię edycyjną. Edytory strukturalne różnią się stopniem, w jakim pozwalają swoim użytkownikom na dokonywanie edycji, które powodują, że dokument staje się niepoprawny składniowo lub semantycznie.
Edytor wrażliwy na język często przedstawia dokument jako drzewo analizy w odniesieniu do gramatyki języka lub jako abstrakcyjne drzewo składniowe (AST). Na przykład DOM jest zasadniczo AST w odniesieniu do danego DTD . Często widok tekstowy tego bazowego drzewa jest generowany przez prettyprinting bazowego drzewa. Redaktorzy związani z programowaniem celowym i programowaniem zorientowanym językowo dla języków ogólnego przeznaczenia i języki specyficzne dla domeny mają wiele cech edytorów wrażliwych na język, ale dążą do większego oddzielenia reprezentacji podstawowej (zamiar ) od reprezentacji powierzchniowej (tekst w języku programowania).
Przykłady
- MPS firmy JetBrains
- Lapis (edytor tekstu) : Edycja tekstu z lekką strukturą