Haskell-src-exts 패키지의 예

Oct 24 2020

저는 Haskell과 함께 일하고 있으며이 언어에 대한 typechecker를 만들고 싶습니다. 이를 위해 나는 그것을 구문 분석하는 방법이 필요하며 Haskell-src-exts가 작업에 적합하다는 것을 알고 있습니다. 그러나 나는이 패키지가 어떻게 작동하는지에 대해 조금도 모른다. 나는 결과없이 인터넷에서 몇 가지 예제 / 자습서를 찾으려고 노력했습니다. 누구든지 나를 도울 수 있습니까? 누구든지 튜토리얼을 알고 있거나이 패키지에 대한 예제가 포함 된 책을 참조 할 수 있습니까? 잘 설명되어 있고 많은 예제와 함께 제공되는 경우 다른 패키지를 사용해 볼 수도 있습니다.

답변

2 K.A.Buhr Oct 23 2020 at 23:16

편리한 진입 점은 parseFile입니다. 다음 프로그램이 자체 구문 분석에 사용되는 경우 :

module HelloParser where

import Language.Haskell.Exts

main = print =<< parseFile "HelloParser.hs"

그런 다음 구문 분석 된 출력을 생성합니다 ( SrcSpanInfo값을 제거 하고 다시 형식화).

ParseOk
  (Module (Just (ModuleHead (ModuleName "HelloParser") Nothing Nothing)) []
    [ ImportDecl { importModule = ModuleName "Language.Haskell.Exts"
                 , importQualified = False
                 , importSrc = False
                 , importSafe = False
                 , importPkg = Nothing
                 , importAs = Nothing
                 , importSpecs = Nothing} ]
    [ PatBind
      (PVar (Ident "main"))
      (UnGuardedRhs (InfixApp
                      (Var (UnQual (Ident "print")))
                      (QVarOp (UnQual (Symbol "=<<")))
                      (App
                        (Var (UnQual (Ident "parseFile")))
                        (Lit (String "HelloParser.hs" "HelloParser.hs")))))
      Nothing ])

비교적 읽기 쉬운 것 같습니다.

Haskell의 유형 검사 작업을 완료하기 위해 수백 개의 구문 분석 트리 데이터 유형과 생성자 Language.Haskell.Exts.Syntax및 기타 패키지 모듈 에 대한 개별적인 고려를 피할 방법이 없다고 생각 합니다. -심층 튜토리얼이 당신을 얻을 수 있습니다.