hanseonc_rpn.c 키워드테이블 신규 빌트인 이식 (#6 RPN 정본 미인식 87단어 해소)
개요
게이트웨이 RPN 정본(
게이트웨이Q/게이트웨이통합.rpn.한선) 컴파일 시 "미인식 단어" 경고 87건 중,
hanseonc_rpn.c의 키워드→opcode 테이블(
keywords[])에 신규 빌트인이 누락되어 발생하는 부분을
crownyc.c(SSOT)·
hanseonc_high.c(키워드 소스) 전수대조로 해소.
근본원인
hanseonc_rpn.c는 미지 단어를 만나면
[경고] 미인식 단어: X를 찍고
그 토큰을 조용히 드롭한다
(변수로도 안 만듦 — hanseonc_std의 "미지단어=0" 함정과는 다른 동작).
hanseonc_high.c에
새로 추가된 빌트인(문자열마크/문자열되감기/메모리마커/메모리복원/맵힙마커/맵힙복원/
소켓버퍼수신/파일소켓전송 등)이
hanseonc_rpn.c의
keywords[] 테이블에 이식되지 않아
RPN 경로에서만 이 함수 호출이 통째로 증발.
작업
hanseonc_high.c의 builtins[](539개 항목, OP_* enum 심볼 포함)을 opcode enum과
대조해 전부 숫자로 해석 → 537개 고유 이름.
hanseonc_rpn.c의 keywords[](기존 384개 고유 이름)와 이름 기준 diff → 197개 누락 확인.
- 197개 중 8개(
문서주석,파일줄읽기,엣지파일읽기,개념색인,개념이름,진폭증폭,
BFS경로,
개념추출 — opcode 752/961~967)는
crownyc.c에 해당
case가 아예 구현되어
있지 않아(SSOT 무동작 확정) 이식 보류.
- 나머지 189개를
hanseonc_rpn.c keywords[] 배열에 {"이름", opcode} 형태로 추가
(opcode 숫자는 crownyc.c의 case 존재 여부로 검증한 값만 사용).
- 재빌드
cc -O2 -o hanseonc_rpn hanseonc_rpn.c — 컴파일 경고 0.
검증
/Users/ef/crowny-rpnkit/예제검증.sh 회귀 25/25 PASS (기존 std/rpn 동작 무회귀).
- 실제 게이트웨이 RPN 재컴파일: 미인식 단어 87 → 77건 (targeted 7개 빌트인 관련 10건 전부 해소:
소켓버퍼수신, 파일소켓전송, 문자열보호, 메모리마커×2, 문자열마크, 메모리복원, 문자열되감기).
생성 큐브 수 30582 → 30598(+16).
- 신규 빌트인 개별 런타임 실행 확인:
메모리마커→변수→보여줘, 문자열마크→...→문자열되감기
둘 다 경고 없이 정상 출력.
잔여 미해소 (77건 — 이번 작업 범위 밖, 별도 후속 필요)
전부
.rpn.한선 소스 자체의 토큰/변수 문제이며 키워드테이블 문제가 아님:
- 단독
-(14회), =(2회) — 산술/대입 연산자가 잘못된 위치에 단독 토큰으로 남아있음
(high2rpn.sh 등 변환기의 술어 재배치 버그로 추정,
feedback_rpn변환기_경로_high2rpn.md 참조).
소켓닫기(소)(2회) — 함수(인자) 호출식 표기가 그대로 남음(RPN 후위형 위반, 괄호 결합).
헤더버퍼,연결,누적,헤더끝,base,소,구분,LF,도메인 등 다수 — 대입(→변수)
전에 먼저 참조(LOAD)되는 순서 문제로 추정 (변수 선언 순서 검증 필요).
- 결론: 변환기(high2rpn.sh) 출력 정합성 별도 점검 필요 — 이번 티켓 범위(키워드테이블)는 완료.
관련 파일
/Users/ef/CrownyOS/crownyc/hanseonc_rpn.c — 수정 (keywords[] +189)
/Users/ef/CrownyOS/crownyc/hanseonc_rpn — 재빌드 바이너리
- 백업:
hanseonc_rpn.c.bak-신규빌트인이식전-20260709_110840,
hanseonc_rpn.bak-신규빌트인이식전-20260709_110840
- 대조 원본:
/Users/ef/CrownyOS/crownyc/crownyc.c(SSOT opcode), hanseonc_high.c(builtins[])
- 검증 대상:
/Users/ef/crowny-gateway/게이트웨이Q/게이트웨이통합.rpn.한선
- 회귀 게이트:
/Users/ef/crowny-rpnkit/예제검증.sh
불변 준수
- 라이브 게이트웨이 프로세스(8080/8443/9100/9152)·crowny-auth(9401) 무접촉 — 컴파일러
소스/바이너리 편집만, 프로세스 kill/재기동 없음.