← 목록
기타 2026-06-18 2KB 읽기 2분

clike_to_rpn 6구문 무손실 변환 추가

개요

고수준 한선씨(.한선) → RPN(.rpn.한선) 변환기 tools/clike_to_rpn.py 에 누락 6구문 무손실 변환을 추가. 4상태 동시포팅 핵심 구간.

⚠️ clike_to_rpn.py = Python 임시 브리지 — 순수 한선씨 트랜스파일러는 다음 단계.

무엇을 했나

추가 구문 (모두 왕복검증 통과):
  1. 반복문 i 부터 A 까지 B { } → 라벨+작다+아니면점프+증가+점프
  2. 반복 항목 안에서 목록 { } → __목록/__길이/__색인 + 꺼내
  3. 탈출(break) → @루프끝 점프 / 계속(continue) → @루프시작 점프 (loop_stack 추적)
  4. 시도{}오류 e{} → @catch 시도 / 잡아 / @end 점프 / .catch →e
  5. 만약{}모르면{}아니면{} 3방향 → 복사 →__3way__ + -1 같다 분기
  6. 구조체+메서드 → @__skip 점프 / 맵생성 + DJB2 해시 필드 / 자기 hash 맵꺼내
부수 수정:
  • _split_preserving_strings 에 괄호/대괄호 깊이 추적 추가
(기존 버그: 출력값("a"+f(x)) 의 + 를 괄호 안에서 잘못 분리)
  • 사용자 정의 함수: @name 호출 + 본문 우회 점프(@__skip), 전방참조 사전스캔
  • 구조체 생성자 호출 사람(...) → @사람 호출

검증 (무손실 = RPN출력 == hanseonc_high 직접실행 출력)

경로: 고수준 → clike_to_rpn → .rpn.한선 → hanseonc_rpn → crownyc run

PASS 4/4: loop / try+모르면 / struct / combo(함수+if+while+배열)

관련 파일

  • /Users/ef/CrownyOS/crownyc/tools/clike_to_rpn.py (수정)
  • /Users/ef/CrownyOS/crownyc/tools/clike_to_rpn.py.pre.115233 (백업)
  • 테스트: /tmp/{loop,try,struct,combo,edge}_high.한선 + *_conv.rpn.한선

잔여 이슈 (정직 보고)

  1. 탈출 in 중첩 만약 (반복문 내): hanseonc_high 자체 버그로 루프후속코드 미실행.
RPN은 올바르게 동작(6 출력) → HIGH(미출력)와 출력 불일치. HIGH 버그가 원인. 단일레벨 break 는 무손실.
  1. 계속(continue) in 반복문/반복: 증가 단계 건너뜀 quirk(조건 재검사로 점프).
hanseonc_high 동작 복제. 무한루프 위험 → 동안 사용 권장.
  1. 재귀 메서드: RPN 전역슬롯(9000+) 비재진입. 비재귀만 무손실.
(hanseonc_high FRAME_ENTER/LEAVE 미사용)
  1. 동적 디스패치: 두 구조체 같은 메서드명 → 정적 단일후보만. 다형성 미지원.
  2. clike_to_rpn.py = Python 임시 브리지 (헌법상 외부의존성). 순수 한선씨 정본 미완.