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

한선씨 정통화 Phase 4 — 4트랙 병행 (큰 도약)

날짜: 2026-05-28 원칙: 헌법 정통, 크라우니에이전트 규칙(통일베이스+사람속도+결과표준), 모두 빠짐없이 진행 범위: Phase 3 후속 — 파서 완성 + 무한재귀 가드 + 대량 변환 + 변환기 개선

결과 요약

트랙결과산출물
1: 파서 TOK_ARROW 처리✅ 완료parse_statement 분기, 0 →x 인라인 작동
2: RecursionError 가드✅ 완료_split_preserving_strings 가드, 6/6 변환
3: 대량 변환 (apps/browser/std)✅ 88개apps 50, browser 35, std 3
4: 변환기 2·3순위 패치✅ 완료이스케이프, 참/거짓/모름, 한줄 동안

트랙 1 — 파서 TOK_ARROW 처리

hanseonc_high.c parse_statement의 default + TOK_IDENT case에 TOK_ARROW 후속 처리 추가.

cparse_expr();
if (cur_type() == TOK_ARROW) {
    advance();
    if (cur_type() != TOK_IDENT) { /* error */ }
    char arrow_name[256];
    strncpy(arrow_name, cur()->text, 255);
    advance();
    int vi = find_var(arrow_name);
    if (vi < 0) vi = add_var(arrow_name);
    emit_var_store(vi);
} else {
    buf_emit_op(OP_POP);
}

검증: 0 →x 1 →y 출력값(x+y) → 결과 1 (정상). "예상치 못한 토큰 '→'" 6개 에러 모두 소멸.

의미: 회로방언이나 고수준 안에서 RPN 인라인 변수선언 가능. 가져오기한 RPN 라이브러리의 0 →전역변수 패턴도 작동.

잔존: .함수이름 (RPN 함수정의)는 별개 — .(TOK_DOT) 파서 처리 필요 (Phase 5 후보).

트랙 2 — RecursionError 가드

clike_to_rpn.py _split_preserving_strings가 분리 못하면 [expr] 반환 → 재귀 호출 → 무한.

python# 가드: 분리 못 했으면 빈 리스트 반환
if len(parts) <= 1:
    return []
return parts

호출자도 가드:

pythonparts = self._split_preserving_strings(expr, ' + ')
if parts:   # 분리 성공한 경우만 처리
    ...

검증: 6개 실패 파일 모두 변환 + RPN 컴파일 성공:

  • gateway.한선 → 363KB
  • 게이트웨이.한선 → 423KB
  • gateway.han → 172KB
  • 순도측정.한선 → 366KB
  • health-monitor.한선 → 317KB
  • cert-manager.한선 → 255KB

트랙 3 — 대량 변환 88개

영역시도성공실패
tools/transpile404
CrownyTVM/std40337
CrownyOS/apps655015
CrownyBrowser/src/v235350 (100%)
합계1448856
CrownyBrowser v2가 100% 변환 성공 — 깔끔한 고수준 코드.

트랙 4 — 변환기 2·3순위 개선

패치위치효과
이스케이프 \" 처리_split_preserving_strings L311, _split_op L360cert-manager 해금
참/거짓/모름 리터럴expr_to_rpn L226-2283진 논리 헌법 정렬
한줄 동안 블록convert_line L154-172gateway.한선 해금
검증: 6개 인공 케이스 모두 통과, 실제 파일 2개 변환 검증.

비율 변화 — 사상 최대 도약

시점RPN고수준전체RPN%
측정 시작 (오늘)186187520688%
Phase 2 후205226024728%
Phase 3 후6334177481713%
Phase 4 후462272621198338%
  • RPN 자산 24.8배 증가
  • 비율 30%p 도약 (Phase 4가 가장 큰 단일 점프)
  • gateway 영역: 0% → 50% (균형 달성)
  • 측정 범위 확장(apps/browser 포함) + 변환기 개선의 복합 효과

학습DB 등록 (5건)

  • 옵션A_파서_TOK_ARROW_처리
  • Phase4_3_대량변환_88개
  • clike_to_rpn_이스케이프_가드
  • clike_to_rpn_무한재귀_가드
  • clike_to_rpn_참거짓모름_리터럴

변경된 파일

/Users/ef/CrownyOS/crownyc/hanseonc_high.c          parse_statement TOK_ARROW 분기 (~30줄)
/Users/ef/CrownyOS/crownyc/tools/clike_to_rpn.py    가드 + 2·3순위 패치 (~30줄)
/Users/ef/CrownyOS/apps/*.rpn.한선                  50개 신규
/Users/ef/CrownyBrowser/src/v2/*.rpn.한선           35개 신규
/Users/ef/Downloads/CrownyTVM/std/*.rpn.한선        3개 신규
/Users/ef/crowny-gateway/lib/*.rpn.한선             6개 추가 (기존 + 트랙2 회복)
/Users/ef/crowny-gateway/scripts/*.rpn.한선         3개 추가

다음 단계 (Phase 5 후보)

  1. RPN 함수 정의(.이름) 파서 처리 — 회로방언이 RPN 라이브러리 100% 가져오기 가능해짐
  2. 남은 56개 변환 실패 진단 — 패턴 식별 + 변환기 추가 개선
  3. **CrownyOS/sdcard-* 영역 (RPi5/OPi5/Kria) 일괄 변환
  4. 학습DB 자동 분류** — RPN/고수준/회로방언 별로 패턴 정본화