2010-03-13 4 views
22

하스켈 파서 결합 자 (Parsec)가 상황에 맞는 문법을 구문 분석 할 수 있다는 것을 읽었습니다. 스칼라 파서 결합 자에 대해서도 마찬가지입니까? 그렇다면이 "into"(일명 ">>") 함수가 무엇입니까?스칼라 파서 결합자를 하스켈의 파섹과 비교하는 방법은 무엇입니까?

스칼라의 파서 결합 자 구현의 몇 가지 강점/약점은 하스켈 대 무엇입니까? 그들은 동일한 문법을 ​​받아들입니까? 오류 메시지를 생성하는 것이 더 쉬울까요? 또는 다른 유용한 것들을 하나씩 수행하는 것이 더 쉬운가?

이 그림에 packrat 파싱 (스칼라 2.8에서 소개)이 어떻게 적용됩니까?

한 언어의 구현에서 다른 연산자/기능/DSL 설탕이 다른 언어로 어떻게 매핑되는지 보여주는 웹 페이지 또는 기타 리소스가 있습니까?

답변

14

많은 질문이 있습니다. 스칼라 코드가 상당히 새로운이기 때문에 아무도 여기에 비교를하지했다 파섹

의 스칼라 구현 (많은 하스켈 파서 콤비 라이브러리의 하나입니다) 파섹 비교

,하지만 확인 문서 :

Haskell에는이 접근법에 관심이있는 경우 다른 많은 파서 연결자 라이브러리가 있습니다 (예 :

  • polyparse
  • 무엇 하스켈의 대 몇 가지 강점/파서 콤비의 스칼라의 구현의 약점?

    하스켈 코드는 10 년 이상 된 것으로 잘 알려져 있으며 많은 예제와 많은 문서 및 사용자 사례가 있습니다. 스칼라의 물건은 비교적 새롭다.

    자료가 많 분석

    자료가 많 구문 분석은 완전히 다르다. 원래 packrat paper은 하스켈에서 개발되었지만 이후 널리 보급되었습니다.

    한 언어의 구현에서 다른 연산자/기능/DSL 설탕이 다른 언어로 어떻게 매핑되는지 보여주는 웹 페이지 또는 기타 리소스가 있습니까?

    아니요.하지만 멋지군요. 그러나 거의 모든 (?) 파서 연결자 라이브러리는 개척 parsec 구현을 기반으로하므로 원래 parsec과 많이 공유합니다.

    7

    다음과 같은 기술적 보고서도있다 :

    Parser combinators in Scala

    파서 콤비는 하스켈 같은 함수형 프로그래밍 언어로 잘 알려져있다. 이 백서에서는 기능적 객체 지향 언어 인 Scala에서 라이브러리로 구현되는 방법을 설명합니다. 스칼라의 유연한 구문 덕분에 우리는 전용 파서 생성기가 지원하는 EBNF 표기법에 매우 가깝게 접근 할 수있다. 초보자를 위해, 우리는 처음부터 최소한의 라이브러리를 개발함으로써 파서 결합 자의 개념을 설명한다. 그런 다음 구문의 일부로 변수 바인딩을 나타내는 지원을 포함하여 기존 스칼라 라이브러리에 대해 자세히 설명합니다. 우리는 도서관의 유용성을 설명하기 위해 몇 가지 현실적인 예를 제공합니다.

    report.pdf (324K)

    +0

    @Adriaan 무어 : 스칼라 2.8 콤비 파서 라이브러리 추가를 해결하는 간행물이 있습니까? –

    +0

    나는 그렇게 생각하지 않지만 티 아크 (Tiark)에게 물어볼 것입니다. 2.7 이후 파서를 연구하지 않았습니다. –

    관련 문제