하스켈을 다른 언어로 번역하는 라이브러리를 업그레이드 중입니다. 지금은 Meta.Parse을 사용하여 Haskell 모듈을 읽어 들이고 here과 같이 TemplateHaskell AST를 반환합니다.템플릿 Haskell AST의 재 연결하기
제가 파싱을 실행할 때, UInfixE와 UInfixP로 구문 분석 된 일련의 중온 연산자를 얻을 수 있습니다. 즉, 미해결 된 연관성이 있음을 의미합니다.
description of the associativity은 하스켈 컴파일러가 어떻게 이러한 문제를 해결하는지 이야기합니다.
내가 파싱에서 얻은 나무에 대해이 재결합을 수행 할 수있는 기능이 있습니까? 나는 이런 식으로 뭔가를 찾고 있어요 :
reassoc :: [Dec] -> [Dec]
나는이 작업을 수행 대규모 AST 통과를 쓸 수 있지만,이 보일러 엄청난 양의 것처럼 보인다, 명확하게 기능은 이미 (어떤 형태로 존재 잘하면 TH와 함께 연주하는 형태로).
그런 것이 있습니까? 선언을 파싱하여 얻은 AST에서 해결되지 않은 중위 연산자를 제거하는 쉬운 방법이 있습니까?
편집 : 연산자의 이름이 주어지면 그 우선 순위와 연관성을 부여 할 수있는 함수조차도 매우 유용합니다.