이러한 도구의 대부분은 할 (또는 오히려 그것의 직접 일대일 시각화) 추상 구문 트리와 직접 일을. 즉, 본 적이 Blockly, 그리고 같은 다른 블록 기반 언어와 편집자를 포함 ( 스크래치 , 연필 코드 / 물방울 , 이런! , GP , 타일 그레이스 등).
이러한 시스템은 다른 곳 (공간 및 상호 작용 난이도)으로 설명 된 이유로 전통적인 정점 및 에지 그래프 표현을 나타내지 않지만 트리를 직접 나타냅니다. 한 노드 또는 블록은 다른 노드가 물리적으로 부모 내부에있는 경우 다른 노드의 자식입니다.
이 시스템 중 하나를 만들었습니다 ( Tiled Grace , paper , paper ). AST와 직접 작업하는 것이 매우 중요합니다. 화면에 표시되는 것은 중첩 된 DOM 요소 (트리)와 같은 구문 트리의 정확한 표현입니다.
이것은 일부 코드의 AST입니다. 루트는 "for ... do"메소드 호출 노드입니다. 해당 노드에는 "_ .. _"로 시작하는 일부 하위 요소가 있으며이 하위 노드에는 "1"노드와 "10"노드의 두 하위 요소가 있습니다. 화면에 나타나는 것은 프로세스 중간에 컴파일러 백엔드가 뱉어내는 것입니다. 이것이 기본적으로 시스템 작동 방식입니다.
원하는 경우 가장자리가 화면을 가리키고 앞쪽의 블록으로 가려진 표준 트리 레이아웃으로 생각할 수 있지만 중첩은 트리를 꼭짓점으로 표시하는 유효한 방법입니다. 도표.
또한 "소스에서 노드 그래프로 왕복 여행을 한 다음 필요할 때 다시 소스로 돌아갈 것"입니다. 실제로 하단의 "코드보기"를 클릭하면 이러한 상황이 발생합니다. 텍스트를 수정하면 텍스트가 다시 구문 분석되고 결과 트리가 다시 편집되도록 렌더링되며 블록을 수정하면 소스에서도 동일한 일이 발생합니다.
연필 코드는 본질적 으로 더 나은 인터페이스 와 동일한 기능을 수행합니다 . 사용하는 블록은 CoffeeScript AST의 그래픽보기입니다. 다른 블록 기반 또는 타일 기반 시스템도 전체적으로 큰 부분을 차지하지만 일부 시스템은 시각적 표현에서 중첩 측면을 명확하게 만들지 못하고 실제 텍스트 언어가 없기 때문에 " 구문 트리 "는 약간 현혹적일 수 있지만 원칙이 있습니다.
당신이 놓치고 그렇다면, 이러한 시스템이 정말이다 하는 추상 구문 트리와 함께 직접 작업. 보고 조작하는 것은 공간 효율적으로 트리를 렌더링하는 것으로, 대부분의 경우 말 그대로 컴파일러 또는 파서가 생성하는 AST입니다.