Guidedoc 엔진¶
Guidedoc은 변환 코어이며 호출자의 저장 공간을 빌린다. 소스를 읽고 의미 트리를 만든 뒤 패스를 실행하고 출력 크기를 측정하여 바이트를 내보낸다. 파일을 열거나 산출물을 게시하지 않는다.
경계¶
코어 변환은 할당하지 않는다. 호출자가 노드 열, 텍스트 저장 공간, 진단, 출력 용량을 제공한다. 호스트는 버퍼 준비 중 할당할 수 있다. 외부 컴파일러는 자체 규칙을 따른다. 보장의 범위는 변환 경계이며 프로세스 전체가 아니다.
트리¶
노드는 타입이 있는 ID를 쓴다. 자주 접근하는 열에는 종류와 부분 트리 범위를, 나머지 표에는 노드별 페이로드를 저장한다. 평탄한 전위 표현으로 힙 포인터 사슬을 따라가지 않고 부분 트리 전체를 건너뛸 수 있다.
노드 \(i\)의 배타적 부분 트리 끝을 \(e_i\)라 하자. 부분 트리는 \([i,e_i)\)를 차지한다. 리프는 \(e_i=i+1\)이며 부모는 자손 뒤에서 끝난다. 구간 증명은 알고리즘에 앞서는 불변식를 참고한다.
API¶
코어 API는 명시적이다. 저장 공간 초기화, 변환, 결과 확인, 초기화를 수행한다. 레지스트리는 리더·패스·렌더러 설명자를 담은 값이다. 실행 중 플러그인 탐색이나 전역 등록 부작용은 없다. 적은 수의 동작으로 다른 Odin 프로그램에서 쉽게 사용하게 한다.
소유권이 핵심 규칙이다. 작업 공간의 뷰는 초기화나 재사용 시 만료된다. 호스트가 보관하는 결과는 세션보다 오래 살아야 하는 텍스트를 소유해야 한다. 정확한 시그니처는 core에 있으며 별도 docs/api와 같은 Odin 소스에서 생성한다. 설명서 PDF에는 내부 링크로 같은 책에 포함된다. 설계 기록은 docs/gds의 GDS 0003이다.