크라우니워드프로세서 기초도구 — 색인생성.한선
개요
크라우니워드프로세서 기초도구 시리즈의 "색인생성" 도메인을 완전 한선씨(hanseonc_high)로 작성.
문서 뒤편 색인(찾아보기) 생성에 필요한 표제 수집·정렬·병합·렌더링 파이프라인을 자기완결 파일로 구현.
무엇을 했는지
- 파일:
/Users/ef/crowny-word/도구/색인생성.한선
- 명세 10함수 전부 구현: 표제추가, 문서수집, 가나다정렬, 행페이지변환, 색인텍스트, 하위표제,
중복병합, 검증, 직렬화, 개수 (+보조 역직렬화)
- 데이터 표현: 색인 = 문자열 배열, 각 원소 "표제|p1,p2,p3"(표제/페이지 "|" 구분, 페이지간 "," 구분).
하위표제(계층)는 "주제>부표제" 형태로 표제 자리에 들어감.
- 가나다정렬은 한글 완성형 유니코드 코드포인트 순서가 사전순(가나다순)과 일치한다는 점을 이용해
코드포인트 비교 삽입정렬로 구현(문자열 정렬() 내장함수는 깨져있어 사용 안 함).
- 행페이지변환은 나눗셈 자연반올림 함정을 피하기 위해 자체 절단나눗셈(반복 뺄셈) 헬퍼로 구현.
- 자체시험 31개 assert 전부 PASS(첫 컴파일에 통과). 통합 파이프라인 시험(문서수집→중복병합→
가나다정렬→색인텍스트) 포함.
컴파일/실행
bashcd /Users/ef/CrownyOS/crownyc
./hanseonc_high /Users/ef/crowny-word/도구/색인생성.한선 > /tmp/색인생성.toau 2>/tmp/색인생성.err
./crownyc run /tmp/색인생성.toau
# 출력: 검사: PASS 31/31
크라우니코드
- lookup MISS 2건(문서추출_색인생성, 한선씨천개색인_항목등록색인 — 기존 학습DB엔 실코드 없음)
- 신규 생성(전체 MISS)
- learn add 3건: 색인생성_문서수집, 색인생성_중복병합, 색인생성_가나다정렬
잔여 이슈
- 이스케이프 규약 없음: 표제/페이지 값에 "|", "," 문자가 들어가면 파싱 오염(문서 표제 특성상
발생 안 한다고 가정 — 필요 시 이스케이프 레이어 추가 필요).
- 색인텍스트()의 주제 헤더 그룹핑은 인접(정렬된) 배열을 전제로 함 — 미정렬 배열을 바로 넣으면
같은 주제가 흩어져 헤더가 중복 출력될 수 있음(사용 전 가나다정렬 호출 권장, 코드 주석에 명시).
- 기존 완성 10파일(텍스트버퍼 등)은 가드레일에 따라 수정하지 않음, 필요한 매치/분리 로직은
검색치환.한선·문단배치.한선 패턴을 참고해 자체 재구현(이식).