← 목록
컴파일러 2026-07-09 4KB 읽기 4분

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.ckeywords[] 테이블에 이식되지 않아 RPN 경로에서만 이 함수 호출이 통째로 증발.

작업

  1. hanseonc_high.cbuiltins[](539개 항목, OP_* enum 심볼 포함)을 opcode enum과
대조해 전부 숫자로 해석 → 537개 고유 이름.
  1. hanseonc_rpn.ckeywords[](기존 384개 고유 이름)와 이름 기준 diff → 197개 누락 확인.
  2. 197개 중 8개(문서주석,파일줄읽기,엣지파일읽기,개념색인,개념이름,진폭증폭,
BFS경로,개념추출 — opcode 752/961~967)는 crownyc.c에 해당 case가 아예 구현되어 있지 않아(SSOT 무동작 확정) 이식 보류.
  1. 나머지 189개hanseonc_rpn.c keywords[] 배열에 {"이름", opcode} 형태로 추가
(opcode 숫자는 crownyc.c의 case 존재 여부로 검증한 값만 사용).
  1. 재빌드 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/재기동 없음.
  • 커밋 없음(지시대로 정리만).