2012-02-21 9 views
0

컴파일러에 대한 많은 경험이 없지만 마침내 필자는이를 작성해야합니다. 저는 파서 (parser)를 위해 FParsec을 사용 중이며 현재 평가자를 작업 중입니다. 나는 (내가 생각하는) 꽤 전형적인 접근 방식을 취하고있다. 환경 및 AST 노드를 사용하는 eval 함수가 있습니다. 환경은 범위에 따라 다르므로 지속적 유형입니다. 이 경우 eval이 필요하고 보조자는 env * node을 반환해야하며 모든 환경 전달이 다루기 힘들어지고 있습니다.컴파일러 환경을 추적하는 방법

이 문제를 처리하는 표준 방법은 무엇입니까? 나는 각 범위에 의해 변형 된 공유 환경을 가지고 있다고 생각하기 시작했다. 그러나 가능하다면 그것을 피하고 싶다.

답변

0

대부분의 통어체 배관을 피하기 위해 부작용을 사용하는 대신 상태 모나드를 사용할 수 있습니다.

+0

컴파일러에서 작업을 단순화한다고 생각하십니까? – Daniel

+0

나는 강한 견해를 갖기 위해 두 가지 방법 모두 시도한 경험이 충분하지 않습니다. – Brian

+0

워크 플로에 구문상의 한계가 있지만 그 내용을 기억할 수 없다고 생각했습니다. – Daniel