구조 편집기

Structure editor

구조 편집기(Structure Editor, structured editor 또는 projectional editor)는 문서의 기초 구조를 인지하는 모든 문서 편집기다.구조 편집기를 사용하여 계층적이거나 표시된 텍스트, 컴퓨터 프로그램, 다이어그램, 화학 공식 및 명확하고 잘 정의된 구조를 가진 기타 유형의 내용을 편집할 수 있다.반대로, 텍스트 편집기는 일반 텍스트 파일을 편집하는 데 사용되는 모든 문서 편집기다.[clarification needed]

일반적으로 텍스트와 구조 편집의 이점은 단일 하이브리드 도구의 사용자 인터페이스에 결합된다.예를 들어, Emacs는 근본적으로 텍스트 편집자지만 텍스트에서 유추되는 구조로서 단어, 문장, 단락의 조작을 지원한다.반대로 Dreamweaver는 기본적으로 표시된 웹 문서의 구조 편집자지만 원시 HTML 텍스트의 표시와 조작도 지원한다.마찬가지로 분자 편집기는 일반적으로 그래픽 입력과 텍스트 입력을 모두 지원한다.CAD 시스템PowerPoint와 같이 내용이 그래픽이고 텍스트 표현이 어색할 때 구조 편집이 주를 이룬다.텍스트 편집은 웹 양식의 텍스트 필드와 같이 콘텐츠에 구조가 크게 결여되어 있을 때 주로 발생한다.포맷된 텍스트를 직접 편집하는 것처럼 보이는 WORSIWYG 워드 프로세싱 시스템은 기본적으로 기본 마크업 텍스트의 구조 편집기다.

언어학에서 구문은 문법적 발언의 구조를 연구하는 학문이며, 따라서 구문방향 편집자는 구조 편집자의 동의어다.언어 기반 편집기와 언어에 민감한 편집기도 동의어다.언어 기반 편집자의 특징은 임시 코드나 형식 문법에 의해 구현될 수 있다.예를 들어 Emacs의 언어 민감도는 주어진 언어에 대한 편집 모드의 Lisp 정의에서 구현된다.대조적으로 XML 편집기의 언어 민감도는 주어진 언어에 대한 공식적인 DTD 스키마에 의해 구동된다.

구조화된 편집자는 구조화된 방식으로 기본 문서를 보고 조작할 수 있지만, 문서가 디스크에 저장되는 파일 형식은 구조화되어 있거나 그렇지 않을 수 있으며 개방되거나 표준화되지 않을 수 있다(예: 일반 텍스트 대 마이크로소프트 워드 문서).

소스 코드는 컴퓨터 언어의 구문에 의해 자연스럽게 구성되기 때문에, 구조 편집은 소스 코드 편집기에서 종종 채택되어 왔다.그러나 대부분의 소스 코드 편집자는 구조 편집기가 아닌 구문 강조 표시와 코드 접기 같은 추가 기능을 가진 텍스트 편집기들이다.일부 통합 개발 환경의 편집자는 소스 코드를 구문 분석하여 파스 트리를 생성하여 구조 편집기와 동일한 분석이 가능하지만, 실제 소스 코드의 편집은 일반적으로 원시 텍스트로 이루어진다.

프로그래밍 언어는 일반적으로 문맥이 없는 문법에 의해 주어지는 잘 정의된 구문을 가지고 있으며, 따라서 그 언어로 쓰여진 소스 코드의 의미 있는 구조 요소는 본문의 문법 구문에 해당한다.초기 구문 중심의 소스 코드 편집기에는 Interlisp-D(Lisp의 제한된 구문용)와 Emily[1](PL/I의 풍부한 구문용)가 포함되었다.

구문 방향 편집자는 문법 규칙을 생성적(예: 프로그램 텍스트의 형식적 파생에서 하나 이상의 단계에 해당하는 사용자 템플릿 제공) 또는 추론적(예: 특정 언어 부분의 구문이 다른 부분이 필요한 문맥으로 이동하는 것을 방지) 또는 분석적(예: 텍스트 분석)으로 취급할 수 있다.편집하여 구조화된 표현 작성).소스 코드 편집기의 구조 편집 기능은 구문이 잘못된 프로그램을 쓰기 어렵게 만든다.언어에 민감한 편집자는 절대적 요구 사항으로 구문적 정확성을 부과하거나(예: 멘토와[2] 같음), 경고 발행 후 구문 오류를 허용할 수 있다(예: 코넬 프로그램 신디사이저와[3] 동일).엄격한 구조화 편집자는 보통 텍스트 편집기로 수행이 쉬운 편집을 어렵게 만드는 경우가 많은데, 이는 소스 코드 편집과 같은 일부 도메인에서 구조화 편집의 채택 부족에 기여하는 요인 중 하나이다.

일부 구문 방향 편집기는 형식 정확성과 같은 언어의 상황에 맞는 제약조건에 대한 준수를 모니터한다.그러한static-semantic 제약 조건 명령조로 행동(예:Gandalf[4][5][6]로), 또는 declaratively 특성 문법(예를 들어, 신시사이저에 Generator[7][8])에 의해나 다분류 대수학(예:PSG[9]로)또는 논리적인 프로그램(예를 들어 에 Centaur[10]과 Pan[11])에 대한 적합성은 운트에 의해 확인과 통일에 의해 지정할 수 있다.편집 기계공 erlyingy. 구조화된 편집자는 사용자가 문서를 구문론적으로 또는 의미론적으로 부정확하게 만드는 편집을 수행할 수 있도록 허용하는 정도에 따라 다르다.

언어에 민감한 편집자는 언어의 문법에 관한 파스 트리로, 또는 추상 구문 트리(AST)로 문서를 나타내는 것이 일반적이다.예를 들어, DOM 트리는 기본적으로 주어진 DTD와 관련된 AST이다.종종, 그 기본 트리의 텍스트 보기는 기본 트리를 예쁘게 인쇄함으로써 생성된다.편집인들은 의도적인 programming[12]과language-oriented 프로그래밍을 범용 언어와 도메인 고유 언어에 관련된겠지만 기본적인 표현(의도)과 표면의 표현은 프로그래밍 languag에서 텍스트 사이의 더 큰 분리를 목표로 하language-sensitive 편집자들의 특징들을 많은 부분을 공유한다.e).

참고 항목

참조

  1. ^ Hansen, Wilfred J. (1971). "User engineering principles for interactive systems". Proceedings of the Fall Joint Computer Conference FJCC 39. AFIPS. pp. 5623–532.
  2. ^ Donzeau Gouge, V.; Huet, G.; Kahn, G.; Lang, B. (July 1980). "Programming environments based on structured editors: The Mentor experience" (PDF). INRIA Research report no. 26.
  3. ^ Teitelbaum, T.; T. Reps (September 1981). "The Cornell Program Synthesizer: A syntax-directed programming environment". Communications of the ACM. 24 (9): 563–573. doi:10.1145/358746.358755.
  4. ^ Habermann, A. Nico; Notkin, David (1986). "Gandalf: Software Development Environments" (PDF). IEEE Trans. Softw. Eng. 12 (12): 1117–1127.
  5. ^ Medina Mora, Raul (1982). Syntax-directed editing--towards integrating programming environments. Pittsburgh, PA: Carnegie Mellon University (PhD Dissertation).
  6. ^ Kaiser, Gail Elaine (1985). Semantics for structure editing environments. Pittsburgh, PA: Carnegie Mellon University (PhD Dissertation).
  7. ^ Reps, T. (1984). Generating Language-Based Environments. Cambridge, MA: The M.I.T. Press. (Awarded the 1983 ACM Doctoral Dissertation Award.).
  8. ^ Reps, Thomas W.; Teitelbaum, Tim (1988). The Synthesizer Generator: A System for Constructing Language-Based Editors. Cambridge, MA: Springer-Verlag.
  9. ^ Snelting, Gregor; Henhapl, Wolfgang (1986). "Unification in many-sorted algebras as a device for incremental semantic analysis". Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages (POPL). New York, NY: ACM Press. pp. 229–235.
  10. ^ Borras, P.; Clement, D.; Despeyrouz, Th.; Incerpi, J.; Kahn, G.; Lang, B.; Pascual, V. (1989). "CENTAUR: The System". "Proceedings of the ACM SIGSOFT/SIGPLAN Software Engineering Symposium on Practical Software Development Environments (PSDE). Vol. 24. New York, NY: ACM Press. pp. 14–24.
  11. ^ Ballance, Robert A.; Graham, Susan L.; Van De Vanter, Michael L. (1990). "Pan language-based editing system for integrated development". SDE 4: Proceedings of the fourth ACM SIGSOFT symposium on Software development environments. Irvine, CA: ACM Press. pp. 77–93.
  12. ^ Czarnecki, Krzysztof & Eisenecker, Ulrich (June 2000). Generative Programming: Methods, Tools, and Applications, Chapter 11 (Intentional Programming). Reading, MA: Addison-Wesley.

외부 링크