매크로를 사용하면서 특정 조건을 유지하는 AST의 노드를 업데이트해야하는 요점 (필자는이를 피하려고 노력했습니다)에 도달했습니다. 값으로변경할 수있는 AST를 업데이트하는 가장 쉬운 방법은 무엇입니까?
Literal(Constant(1))
: 예를 들어, 나는 각 노드를 업데이 트하려는 가정 해 봅시다
Literal(Constant(2))
그 AST 노드가 식 트리 어디에서나있을 수있는, 그래서 임시을 사용할 수 없습니다 패턴 매칭 기. 분명히, 내가하고 싶은 마지막 일은 모든 컴파일러 프리미티브를 커버 할 수있는 전체 패턴 매처를 코딩하는 것입니다. 나는 API에서 검색하고 있지만, 과 같은 메소드는을 수집하고 은 패밀리는 트리를 선형 일로 처리하므로 내 요구 사항을 충족시키기에 충분하지 않으며 전체 업데이트를 원한다는 인상을 가지고 있습니다. 결과적으로 나무. 그래서, 똑똑한 방법으로 불변 식 트리를 업데이트 할 수 있습니까? 표준 API에서 '업데이트'작업이 존재하지 않는 이유는 무엇입니까?
가 TreeTransformer있다. 아마 비슷한 매크로가 있어야한다고 생각합니다. – pedrofurla
아마도 [zippers] (http://anti-xml.org/zippers.html) –
@ NikitaVolkov를 확인하고 싶을 것입니다. 매크로의 문맥에서 묻지 않는다면 말입니다. – pedrofurla