← 목록
기타 2026-05-27 5KB 읽기 5분

한선씨 정통화 Phase 3 — 3트랙 병행 (대량변환 + 토크나이저 패치 + 변환기 진단)

날짜: 2026-05-27 원칙: 헌법 정통(RPN=ISA729 1:1), 크라우니에이전트 규칙(통일 베이스 + 사람 속도 + 결과 표준) 범위: Phase 2 후속 — 가장 깊은 인프라 개선

결과 요약

트랙결과산출물
1: 옵션A 토크나이저 패치✅ 토큰화 완료, △ 파서 추가 필요hanseonc_high.c TOK_ARROW emit
2: 대량 변환 (pkg/libs 등)✅ 393개 변환pkg/libs/*.rpn.한선 393개
3: clike_to_rpn 진단+패치✅ 패치 적용, △ 잔존 버그 발견clike_to_rpn.py 인자없는 함수호출 지원

트랙 1 — hanseonc_high.c 옵션 A 토크나이저 패치

패치 위치: 2곳, 총 ~8줄.

c// hanseonc_high.c L574
TOK_LBRACK, TOK_RBRACK, TOK_COMMA, TOK_DOT, TOK_SEMI,
TOK_ARROW,   // → (RPN 할당 연산자: U+2192, UTF-8 E2 86 92)

// hanseonc_high.c L752 (토큰화 함수, "2글자 연산자" 블록 앞)
if ((unsigned char)src[i] == 0xE2 && i+2 < src_len &&
    (unsigned char)src[i+1] == 0x86 && (unsigned char)src[i+2] == 0x92) {
    t->type = TOK_ARROW; strcpy(t->text, "→"); i += 3; token_count++; continue;
}

적용 후 동작:

  • 0 →x 입력 → TOK_NUM(0) TOK_ARROW("→") TOK_IDENT("x") 3토큰 분리 ✓
  • 식별자 흡수 문제 해결됨 ✓
잔존: 파서가 TOK_ARROW를 모름 — "예상치 못한 토큰" 오류. 고수준 모드에서 0 →x를 의미 있게 해석하려면 파서에 NUM ARROW IDENTSTORE 시퀀스 추가 필요 (Phase 4 후보).

빌드: cc -O2 -o hanseonc_high hanseonc_high.c (TLS 불필요).

트랙 2 — pkg/libs 대량 변환 (393개)

한선컴파일.sh --convert /Users/ef/CrownyOS/crownyc/pkg/libs 결과:

  • 후보: 4046개 (고수준, .rpn.한선 미보유)
  • 변환 성공: 393개 (.rpn.한선 정본 생성)
  • 실패 다수: clike_to_rpn 미지원 패턴 (Phase 3-3 진단 영역)
pkg/libs는 npm 패키지화된 라이브러리 영역. 일괄 변환 인프라(--convert)가 실제로 대량 자산에 적용 가능함을 실증.

트랙 3 — clike_to_rpn 변환기 진단 + 패치

진단 결과 (6개 실패 파일 분석)

파일주 실패 원인
gateway.한선연속 혹시 체인 + 한 줄 동안 블록
게이트웨이.한선참/거짓 리터럴 미변환 + 인자없는 함수호출
gateway.han인라인 // 주석 오파싱
순도측정.한선중첩 동안 인덱스 충돌
health-monitor.한선인자없는 함수호출 (맵생성())
cert-manager.한선\" 이스케이프 문자열 파싱 오류

적용된 패치 (1순위)

python# clike_to_rpn.py L233
m = re.match(r'([가-힣a-zA-Z_]\w*)\((.*)\)$', expr)  # .+ → .*
if m:
    fname = m.group(1)
    args_str = m.group(2).strip()
    if not args_str:
        return fname   # 인자 없는 함수호출
    args = self._split_args(args_str)
    ...

발견된 잔존 버그

6개 파일 재변환 시도 시 RecursionError: maximum recursion depth exceeded 발생. _split_preserving_strings가 분리 실패 시 입력 그대로 반환 → 무한 재귀.

내 패치와 무관 (패치 전에도 동일 트레이스백). 별도 진단/수정 필요 (Phase 4 후보).

비율 변화 (전체 8% → 13%)

시점RPN고수준전체RPN%
측정 시작186187520688%
Phase 2 후205226024728%
Phase 3 후6334177481713%
  • RPN 자산 3.4배 증가 (186 → 633)
  • 비율 5%p 도약 (정통화 사상 가장 큰 도약)
  • pkg/libs 393개가 비율 도약의 주역

변경된 파일

/Users/ef/CrownyOS/crownyc/hanseonc_high.c          TOK_ARROW + 토큰화 분기 (~8줄)
/Users/ef/CrownyOS/crownyc/hanseonc_high.bak.옵션A  백업
/Users/ef/CrownyOS/crownyc/tools/clike_to_rpn.py    .+ → .* + guard
/Users/ef/CrownyOS/crownyc/pkg/libs/*.rpn.한선      393개 신규

Phase 4 후보 (잔존 작업)

  1. hanseonc_high 파서에 TOK_ARROW 처리NUM ARROW IDENT → STORE 시퀀스. 회로방언 안에서 0 →이름 형태 인라인 변수 선언 가능해짐.
  2. clike_to_rpn RecursionError 수정_split_preserving_strings 분리 실패 시 빈 리스트 반환 가드.
  3. 2/3순위 변환기 개선: 이스케이프 문자열, 한 줄 동안 블록, 참/거짓 리터럴 변환, 연속 혹시 체인.
  4. 다른 영역 일괄 변환: tools/transpile/, CrownyTVM/std/, CrownyOS/apps/.