범용 매크로 프로세서

General-purpose macro processor

범용 매크로 프로세서 또는 범용 프리프로세서는 특정 언어 또는 소프트웨어에 얽매이지 않거나 통합되지 않은 매크로 프로세서입니다.

매크로 프로세서는 텍스트 스트림을 한 곳에서 다른 곳으로 복사하는 프로그램이며, 이를 통해 체계적인 일련의 치환을 수행합니다.매크로 프로세서는 어셈블러나 컴파일러등의 다른 프로그램에 짜넣어져 있는 경우가 많습니다.모든 종류의 텍스트를 처리하는 데 사용할 수 있는 독립 실행형 프로그램인 경우도 있습니다.

매크로 프로세서는 언어 확장(기존 언어 컴포넌트로 표현할 수 있는 새로운 언어 구성 요소 정의), 의사결정이 필요한 체계적인 텍스트 대체 및 텍스트 재포맷(HTML 파일에서 자료의 조건부 추출 등)에 사용되고 있습니다.

범용 매크로 프로세서의 예

이름. 연도 묘사
GPM 1960년대 최초의 매크로 프로세서 중 하나는 GPM(General Purpose Macrogenerator)[1]입니다.이것은 1960년대 중반 영국 케임브리지 대학에서 크리스토퍼 스트레이시의 지시로 개발되었습니다.
ML/I 1960년대 특히 중요한 범용 매크로 프로세서는 ML/I(Macro Language One)입니다.이것은 케임브리지 대학원생인 Peter J. Brown에 의해 박사 연구의 일환으로 개발되었습니다.ML/I는 문자 스트림에서 작동하며 입력에 특별한 형식이나 매크로를 도입하기 위한 특수 플래그 문자가 필요하지 않습니다.
스테이지 2 1960년대 ML/I의 동시대 제품은 William Waite의 모바일 프로그래밍 [3]시스템의 일부인 STAGE [2]2였습니다.이것 역시 범용 매크로 프로세서이지만, 한 번에 1행씩 입력해, 지정된 패턴에 대해서 각 행을 매칭합니다.문자 집합과는 무관하고, 숫자 0 ~9가 연속해, 그 순서(시대의 6비트BCD 문자 코드 중 일부에서는 충족되지 않는 조건)를 필요로 하는 것이 특징입니다.
M6 1960년대 초기 매크로 프로세서는 AT&T Bell Laboratories에서 Douglas McIlroy, Robert Morris 및 Andrew Hall에 의해 개발되었습니다.그것은 GPM과 TRAC의 영향을 받았다.FORTRAN [4]IV에 실장되어 버전2 Unix로 이식되었습니다.
스누볼 1960년대 SNOBOL은 매크로 프로세서가 수행할 수 있는 대부분의 전처리를 수행할 수 있는 문자열 처리 언어입니다.
XPOP XPOP은 1960년대 IBM의 Mark Halpern에 의해 일반적인 매크로 프로세싱 언어에 대한 또 다른 시도였다.
TTM 1968 TTM은 주로 문자열 조작, 텍스트 편집, 매크로 정의 및 확장 및 일반적으로 시스템 프로그래밍으로 분류되는 기타 응용 프로그램을 위해 설계된 재귀적 해석 언어입니다.그것은 1968년 스티븐 케인과 E에 의해 개발되었다.캘리포니아 공과대학의 켄트 고든입니다주로 GAP 및 [1]GPM에서 파생됩니다[5].
GMP 1970년대 1970년대 중반 CII Company의 DLB/GC 부문의 M Boule이 R.J. Chevance의 아이디어에 따라 개발한 GMP(General Macro Processor)도 시도되었습니다.첫 번째 버전은 보르도 I 대학교와 연계하여 테스트한 SIRIS8/IRIS80 시스템을 실행했습니다.이것은 mini6 시스템으로 이식되어 이 컴퓨터 패밀리의 시스템 생성에 관여하는 주요 컴포넌트였습니다.GMP 프로세서는 매크로의 구문을 정의하기 위해 C2-촘스키 문법을 사용했으며 계산을 실행하고 매크로 확장을 진행하기 위해 명령어를 사용했습니다.
M4 1977 m4는 Brian Kernighan과 Dennis Ritchie의해 Unix용으로 설계되었다.
엘레나 소프트웨어: 연습과 경험, 제14권, 519-531, 1984년 6월
기마 1995 gema는 패턴 매칭에 기반한 컨텍스트 매크로 프로세서이며 David N. Gray가 작성했습니다.컨텍스트에 의한 정규 표현의 개념을 대체/확장합니다.컨텍스트는 이름 있는 패턴 세트에 대략 대응합니다.그 결과, Gema의 매크로가 EBNF의 [6]설명과 매우 유사합니다.
GPP 1996 gpp는 Denis Auroux가 작성한 또 다른 일반적인 매크로 프로세서입니다.C 프리프로세서와 유사하지만 보다 일반적인 의미를 가지며 맞춤 구문을 사용할 수 있습니다(예를 들어 TeX, XHTML, Prolog와 같은 스크립트를 정의할 [7]수 있습니다).
M5 1999 m5는 윌리엄 A가 작성한 범용 매크로 프로세서입니다.워드 주니어많은 매크로 프로세서와 달리 m5는 입력을 직접 해석하지 않습니다.대신 첫 번째 패스가 입력을 awk 프로그램으로 변환하고 두 번째 패스가 awk 프로그램을 실행하여 최종 출력을 생성하는 2패스 방식을 사용합니다.
익스펜더 2011 pyexpander는 Python 프로그래밍 언어에 기반한 범용 매크로 프로세서입니다.간단한 매크로 대체 외에도 임의의 Python 표현식의 평가와 pyexpander Turing[8]완료를 가능하게 하는 Python 코드 실행을 가능하게 합니다.
텍스트 어셈블러 2014 텍스트 어셈블러는 JavaScript 프로그래밍 언어에 기반한 범용 텍스트/매크로 프로세서입니다.단순한 매크로 치환을 넘어 임의의 JavaScript 식을 평가하고 JavaScript 코드를 실행할 수 있습니다.또한 보다 복잡한 데이터 중심 텍스트 [9]처리 작업을 위해 JSON 데이터 모델을 로드할 수도 있습니다.
PP 2016 PP는 Pandoc(더 일반적으로 Markdown 및 reStructuredText)으로 설계된 텍스트 프리프로세서입니다.PP 구현: 매크로, 리터레이트 프로그래밍, GraphViz, PlantUML 및 ditaa 다이어그램, Bash, Cmd, PowerShell, Python 및 Haskell 스크립트.[10]
미니맥 minimac은 미니멀리즘 범용 매크로 프로세서입니다.이 필터는 문자 스트림필터로 동작하며 매크로가 발견되면 재귀적으로 확장됩니다.매크로 프로세서가 명시적 인수 스택을 사용하고 사용자 함수가 연결(제4 언어와 [11]유사)에 의해 정의된다는 점에서 매크로 프로세서는 이례적입니다.
aa_filength(호출) 2017 aa_macro는 Python으로 작성된 오픈 소스 문자 스트림 기반 텍스트 처리 언어입니다.텍스트는 왼쪽에서 오른쪽으로 안쪽에서 바깥쪽으로 처리됩니다.사전 정의된 내장 함수를 선택하면 직접 또는 사용자 정의 스타일의 요소로 사용할 수 있는 기본적인 처리 메커니즘을 제공합니다.이 언어는 사용자가 확장할 수 있으며, 이 언어에 대한 오픈 소스 웹 기반 문서 준비 래퍼인 wtfm을 사용할 [12][13]수 있습니다.

「 」를 참조해 주세요.

  • 매크로(컴퓨터 사이언스)– 컴퓨터 프로그래밍에서 세트 입력을 세트 출력으로 대체하는 규칙

레퍼런스

  1. ^ a b Strachey, Christopher (October 1965). "A General Purpose Macrogenerator". Computer Journal. 8 (3): 225–241. doi:10.1093/comjnl/8.3.225.
  2. ^ Waite, William M. (July 1970). "The mobile programming system: STAGE2". Communications of the ACM. New York, NY, USA: ACM. 13 (7): 415–421. doi:10.1145/362686.362691.
  3. ^ Britten, Charles Randyl (2020-06-26). "Translation of 8080 Code to 8086 - Microsoft Translation of 8080 Code to 8086 and Other 16-Bit Processors". Archived from the original on 2021-07-23. Retrieved 2021-11-28. Stage2 was created by Prof William Waite at the University of Colorado in the late sixties as a major component of his mobile programming system, MPS. Stage2 uses a pattern matching algorithm to match input lines of text against a set of templates. Each template is the first line of a macro and when a match is recognized the code body of that macro is processed to produce output text, error messages, or create a constructed line that is submitted for further template matching. So the process is fully recursive and quite powerful in its capabilities for text transformation. In fact, it can be used to implement a programming language compiler.
  4. ^ Cole, A. J. (1981). Macro Processors (2nd, revised ed.). CUP Archive. p. 254.
  5. ^ Farber, D. J., 635 조립 시스템 - GAP. Bell Telephone Laboraties Computation Center(1964).
  6. ^ "Gema". gema.sourceforge.net. Retrieved 2017-04-21.
  7. ^ "GPP". logological.org/gpp. Retrieved April 21, 2017.
  8. ^ "Welcome to pyexpander's documentation! — pyexpander 1.7.0 documentation". pyexpander.sourceforge.net. Retrieved 2017-04-21.
  9. ^ "akiwi - Text Assembler". www.akiwi.co.uk. Retrieved 2017-04-21.
  10. ^ Delord, Christophe. "PP - A generic Preprocessor (with Pandoc in mind)". cdsoft.fr. Retrieved 2017-10-17.
  11. ^ "minimac". freshmeat.net. Retrieved 2017-04-21.
  12. ^ "aa_macro". Retrieved 2017-11-24.
  13. ^ "wtfm". Retrieved 2017-11-24.