hanseonc_rpn.c에 float(소수점) 리터럴 지원 추가
개요
크라우니워드프로세서 RPN 정본화 중 발견된 결손:hanseonc_rpn.c(RPN 한선씨 컴파일러)가
소수점 리터럴을 미지원(757행 strtol이 2.83→2로 조용히 절단). 고수준
컴파일러(hanseonc_high.c 1985~2031행)가 쓰는 TFloat 균형3진 큐브 인코딩 산식을
그대로 이식했다.무엇을 했는지
수정
/Users/ef/CrownyOS/crownyc/hanseonc_rpn.c "4. 숫자 리터럴" 분기(구 756~761행)를
strtol+endptr로 소수점 판정(. 뒤 숫자 1개 이상, high 732행과 동일 파리티, e표기
미지원) 후 float면 hanseonc_high.c 1985~2031행 산식(맨티사 정규화 3^18/2 근사·
±364 지수 한계·균형3진 트릿 변환·t[24]=A/t[25]=T/t[26]=T 마커)을 그대로 이식,
정수면 기존 strtol+buf_emit_data 경로 완전 유지.검증 (5단계)
- 빌드:
cc -O2 -o hanseonc_rpn hanseonc_rpn.c경고 0. - 단위(큐브 바이트 동일성):
2.83, -0.5, 0.0001, 123456.789— high/rpn 두
42, -7은 high↔rpn 간 t[24..26] 마커가 애초부터 다름(TYPE_NUM
매크로 정의가 두 컴파일러에서 서로 다른 상수—float 작업과 무관한 기존
불일치, 신버전/구버전 rpn 바이너리 간에는 완전 동일이라 이번 패치의 회귀
아님을 확인).
- 실행:
crownyc run으로 high/rpn 각각문자열변환()출력 비교 —
2.83 / -0.5 / 0.0001 / 123457(=%g 6자리, 기존 동작) / 42 / -7 완전 일치.
- 66파일 전수 회귀:
/Users/ef/crowny-word/도구/*.rpn.한선66개를 구버전
hanseonc_rpn.bak-prefloat)·신버전 각각 컴파일 → .toau md5 66/66 완전 동일
(정수 경로 무변경 확인).
- 차단 해제 실증(PDF텍스트):
PDF텍스트.한선(2.834645669 리터럴 보유)을
tools/clike_to_rpn.한선(현재 정본 — 구 .py는 _삭제됨_python/으로 이관됨,
실행 안 함)으로 변환 → 신버전 hanseonc_rpn으로 컴파일 성공(exit 0, 8869
cubes) + crownyc run 실행 성공, 자체 검사 31/36 PASS.
- 발견된 별개 결손(수정 안 함, 범위 밖): clike_to_rpn.한선 자체가
2.834645669 같은 소수 리터럴을 2 "834645669" 맵꺼내 곱해로 오변환하고
(FAIL MM을PT_A4폭 실제=-210 기대=595), } 혹시 (c == "\\") {처럼 백슬래시
문자열 비교가 낀 else-if 체인을 변환하지 못하고 원문 그대로 흘려보낸다
(컴파일 시 "미인식 단어" 경고 다수). 둘 다 hanseonc_rpn.c가 아니라
tools/clike_to_rpn.한선 컨버터 자체의 결손 — 이번 태스크 범위 밖, 별도
담당으로 이관.동반 한선씨 파일
/Users/ef/CrownyOS/crownyc/hanseonc_rpn_float.한선 — C 산식(맨티사 정규화+균형3진
트릿 변환)을 독립 재구현. 정답셋은 hanseonc_high 실컴파일 큐브를 디코딩해 확보
(2.83→맨티사121822220/지수-16, -0.5→-64570081/-17, 0.0001→84728861/-25,
123456.789→89999999/-6). crownyc run 결과 16/16 PASS(맨티사·지수·양쪽
라운드트립 전부).관련 파일
/Users/ef/CrownyOS/crownyc/hanseonc_rpn.c(수정본)/Users/ef/CrownyOS/crownyc/hanseonc_rpn.c.bak-20260722-float전(수정 전 백업)/Users/ef/CrownyOS/crownyc/hanseonc_rpn.bak-prefloat(구버전 바이너리, 회귀 대조용)/Users/ef/CrownyOS/crownyc/hanseonc_rpn_float.한선(교차검증 동반 파일)/Users/ef/crowny-word/도구/PDF텍스트.rpn.한선(신규 변환 산출물 — 컨버터 결손 포함 상태로 존재)
잔여 이슈
tools/clike_to_rpn.한선컨버터의 소수점 리터럴 오변환 + 백슬래시 비교
- hanseonc_high.c와 hanseonc_rpn.c의 정수 리터럴 마커 트릿(t[24..26])이
크라우니코드: lookup HIT 0건 / MISS 1건(TFloat균형3진인코딩, 신규 생성) / learn 추가 1건