← 목록
기타 2026-07-07 5KB 읽기 4분

crowny-rpnkit — 한선씨 RPN 숙련 도구 제작

개요

클로드(모든 세션)가 한선씨 RPN(hanseonc_rpn 실용 방언)으로 능숙하게 코딩하도록 하는 숙련 도구 4종을 제작·전량 라이브 검증했다. /Users/ef/crowny-rpnkit/

무엇을 했는지

  1. 코어/키워드.dathanseonc_rpn.c의 실제 키워드→opcode 테이블(133~294줄)만 정확히
추출(373개). 전체파일 grep이 아니라 테이블 범위로 한정해 .rpn.한선/.한선 같은 비-키워드 문자열 오염을 제거. 구조토큰(끝·참·거짓·모름·그리고·또는·아닌·만약· 아니면점프·점프·호출·반환·입력·배열) 전부 존재 확인. "가"(무조건점프)는 hanseonc_rpn에 없음을 실측 확인(std 전용 — bare 라벨 호출도 std만 허용, RPN은 @라벨 필수) — 키워드.dat에서 의도적으로 제외.

  1. 코어/rpn린트.rpn.한선 — RPN 정본으로 직접 작성한 린트 코어. /tmp/rpnlint_in.txt
(검사대상, 셸이 전처리)와 /tmp/rpnlint_kw.txt(키워드 목록)를 읽어 3규칙 검사: 미정의라벨 참조, 미지단어(조용한0), 끝없음. hanseonc_rpn으로 컴파일 통과(경고 0건).

  1. rpn숙련.sh — 사용법/검사/채점/드릴/학습/현황 6개 서브커맨드. 검사는 전처리
(주석제거+문자열→STR치환+1토큰1줄) → RPN 코어 실행 → 컴파일 게이트 → 종합판정. 코어 실행 실패 시 perl 기반 bash 폴백 린트(동일 3규칙)로 자동 대체, 폴백|bash 표기.

  1. 드릴/드릴덱.psv — 9급→7급→5급→3급→1급 15문제, 전부 실컴파일+실행으로
기대출력 일치 확인 후 수록(스크립트 루프 검증 15/15 PASS).

라이브 검증 결과 (완료기준 5항목 전부)

  1. rpn숙련.sh 검사 lint_ok.rpn.한선(정상) → 판정|티|통과 PASS
  2. 오타 파일(더헤) → 위반|미지단어(조용한0)|더헤 정상 검출 PASS
  3. rpn숙련.sh 드릴 2 정상 출력(문제/기대출력/채점커맨드) PASS
  4. 드릴덱 15문제 전부 채점 PASS(스크립트 루프 실증, 9급3+7급3+5급3+3급3+1급3)
  5. 코어/rpn린트.rpn.한선hanseonc_rpn으로 경고 0건 컴파일 PASS

제작 중 발견한 신규 VM 함정 (메모리+가드레일 동시 갱신)

  • hanseonc_rpn 함수호출은 @라벨 호출만 인정(bare 라벨명은 미지단어) — std(자기호스팅)는
bare 라벨 호출을 허용해 혼동 소지. .rpn.한선은 항상 @함수 호출.
  • 글자(s,i)는 hanseonc_rpn에서 코드포인트(정수) 반환(1글자 문자열 아님, opcode343=
STR_GETC, "코드값"과 완전 동일 별칭). 비교는 정수 리터럴과 직접.
  • 큐브생성 키워드가 opcode751(HASH_HAS=맵있나)로 오배선 — hanseonc_rpn엔 "맵있나"
키워드 자체가 없음(hanseonc_high.c엔 있음). 존재확인은 맵꺼내(m,키)==1 패턴 권장.
  • "아니면점프"(거짓시 점프)로 if/then 위반로직 짤 때 극히 잘 뒤집힌다 — TRUE시 실행할
코드는 조건을 그대로 두고 뒤에 배치 + 아니면점프로 스킵점프 만들거나, 만약(참이면 점프, RPN 전용)을 쓸 것. 이번 작업에서 3회 실측 재발(저장분기·라벨검사·끝검사).

메모리: feedback_hanseonc_rpn_라벨호출_글자코드값_큐브생성맵있나.md 가드레일: ~/.claude/templates/한선씨-가드레일.md(hanseonc_rpn 함정 섹션 신설)

관련 파일

  • /Users/ef/crowny-rpnkit/코어/키워드.dat (373 키워드)
  • /Users/ef/crowny-rpnkit/코어/rpn린트.rpn.한선 / .toau
  • /Users/ef/crowny-rpnkit/rpn숙련.sh
  • /Users/ef/crowny-rpnkit/드릴/드릴덱.psv (15문제)
  • /Users/ef/crowny-rpnkit/RPN사용법.md(기존 SSOT, 미변경) / README.md(기존)

크라우니코드 프로토콜

  • lookup/search "RPN 린트", "hanseonc_rpn 라벨" → MISS(신규 로직 확인 후 생성)
  • learn add "rpn린트코어_라벨미지단어검사" (린트 코어 전문 등록, 별칭 rpn린트코어)
  • 보고: lookup MISS 2건 / 생성 1건(린트 코어) / learn 추가 1건

잔여 이슈

  • 코어/rpn린트.rpn.한선의 숫자 리터럴 판정은 "첫글자 '-' 또는 0-9"만 보는 단순화
(단독 "-" 토큰도 숫자로 스킵 — 실사용상 무해하나 완전한 재현은 아님, 파일 내 주석으로 명시).
  • 폴백 bash 린트는 perl 기반(과제 문구는 "grep/awk"였으나 UTF-8 다국어 안전성 위해 perl 선택,
같은 3규칙 재구현, RPN 코어와 결과 일치 확인됨).
  • 큐브생성=맵있나 오배선은 다음 hanseonc_rpn.c 재빌드 때 "맵있나" 키워드 정식 추가 권장(미반영).