파섹(파서)

Parsec (parser)
파르세크
원본 작성자다안 레이젠, 파올로 마르티니, 앙투안 후작
개발자허버트 발레리오 리델, 데릭 엘킨스, 앙투안 후터, 로만 첼랴카, 라이언 스콧
초기 릴리즈2006년 11월 2일;[1] 15년(2006-11-02)
안정적 해제
3.1.14.0 / 2019년 8월 10일; 2년(2019-08-10)[2]
리포지토리github.com/haskell/parsec
기록 위치하스켈
운영 체제Linux, macOS, Windows
플랫폼하스켈 플랫폼
유형파서 결합기, 라이브러리
면허증BSD-3
웹사이트hackage.haskell.org/package/parsec

파르세크하스켈에서 파서를 쓰는 도서관이다.[3]고차 파서 콤비네이터를 기반으로 하기 때문에 복잡한 파서를 여러 개의 작은 파서(parser)로 만들 수 있다.[4]에를랑,[5] 엘릭시르,[6] OCaml,[7] F#[8][9] 등 다른 여러 언어와 더불어 C#,[10] 자바와 같은 명령어에서도 재조명되었다.[11]

파서 결합기 기반 프로그램은 일반적으로 파서 발생기 기반[citation needed] 프로그램보다 속도가 느리기 때문에 파섹은 일반적으로 작은 도메인별 언어에, 해피GHC와 같은 컴파일러에 사용된다.[12]

Parsec에서 파생된 다른 Haskell 파서 결합기 라이브러리에는 Megaparsec과[13] Attoparsec이 있다.[14]

Parsec은 BSD-3-Clause 라이선스에 따라 출시된 무료 소프트웨어다.[15]

파르섹으로 쓰인 파서스는 특정 문자열을 인식하는 파서 등 단순 파서부터 시작해 이를 결합해 행동이 더 복잡한 파서(parser)를 구축한다.예를 들어,digit숫자를 파싱하고string특정 문자열을 구문 분석하다(예:"hello").

Parsec과 같은 파서 결합기 라이브러리는 파서들을 실제 값으로 실행할 수 있는 유틸리티 기능을 제공한다.문자열에서 한 자릿수를 인식하는 파서는 두 가지 기능으로 나눌 수 있다. 하나는 파서를 생성하기 위한 것이고, 다른 하나는main이러한 유틸리티 함수 중 하나를 호출하는 함수(parse이 경우) 파서를 실행하려면:

수입하다 텍스트.Parsec      -- 일반 구문 분석 유틸리티 기능 보유 수입하다 텍스트.Parsec차르 - 특정 기본 결합기 포함 타자를 치다 파서 = 스트림 s m 차르 => 파르세크T s u m   파서 :: 파서 파서 = 끈을 매다 "안녕"  본래의 :: IO () 본래의 = 인쇄하다 (파스를 치다 파서 "[시험"] "헬로 월드") - '안녕하십니까'를 인쇄 

우리는 a를 정의한다.Parser타이프로 서명하다parser읽기 쉬운만약 우리가 이 프로그램을 바꾸고 싶다면, 그 중 어느 쪽이든 읽어보라고 말해라."hello"또는 끈"goodbye", 우리는 교환원을 이용할 수 있다.< >, 에 의해 제공됨Alternativetypeclass, 두 파서를 하나의 파서로 결합하여 다음 중 하나를 시도하는 방법:

파서 = 끈을 매다 "안녕" < > 끈을 매다 "goodbye" 

참조

  1. ^ "parsec 2.0". Hackage. Retrieved 3 September 2019.
  2. ^ "Releases". Github. Retrieved 3 September 2019.
  3. ^ "Parsec on Haskell wiki". Haskell Wiki. Retrieved 29 May 2017.
  4. ^ Leijen, Daan; Meijer, Erik (July 2001). "Parsec: Direct Style Monadic Parser Combinators For The Real World" (PDF). Microsoft Research. Retrieved 22 November 2014.
  5. ^ "Parsec Erlang". BitBucket. Retrieved 23 November 2014.
  6. ^ "Nimble Parsec". Github. Retrieved 18 December 2018.
  7. ^ "Parsec OCaml" (PDF). The OCaml Summer Project. Retrieved 23 November 2014.
  8. ^ "XParsec by corsis". XParsec. Retrieved 29 May 2017.
  9. ^ "FParsec". Quanttec. Retrieved 29 May 2017.
  10. ^ "CSharp monad". Github. Retrieved 10 December 2014.
  11. ^ "JParsec". Github. Retrieved 14 October 2016.
  12. ^ "The Glasgow Haskell Compiler (AOSA Vol. 2)". The Architecture of Open Source Applications. Retrieved 23 November 2014.
  13. ^ "megaparsec: Monadic parser combinators". Hackage. Retrieved 2018-09-10.
  14. ^ "attoparsec: Fast combinator parsing for bytestrings and text". Hackage. Retrieved 2018-09-10.
  15. ^ "Parsec". 25 October 2021.

외부 링크