← 목록
기타 2026-04-15 3KB 읽기 3분

B군 트랜스파일러 6개 완성 (B-9~B-14)

개요

외부 언어 → 한선씨 자동 변환 MVP 6개. Python부터 VHDL까지. 모두 /Users/ef/CrownyOS/crownyc/tools/transpile/ 에 위치.

완료 변환기

ID입력도구상태
B-9Python 3py2han.py✓ AST 기반, fibonacci+f-string 컴파일·실행
B-10JavaScriptjs2han.py✓ 정규식 기반, template literal, arrow 지원
B-11Cc2han.py✓ 타입 제거, printf 포맷 자동분해, main 자동호출
B-12Rustrs2han.py✓ 암시적 반환, let mut, println! 플레이스홀더
B-13Gogo2han.py:=, for 3종, fmt.Printf, 괄호 없는 if/for
B-14VHDLvhdl2han.py△ 구조 변환 MVP (컴파일은 미검증)

검증 기준 (B-9~B-13)

같은 fibonacci + greet 예제로 5개 언어 모두:

  • fibonacci(10) = 55
  • 1+2+...+10 = 55
  • 한글 f-string 출력 ✓

관련 파일

/Users/ef/CrownyOS/crownyc/tools/transpile/
├── py2han.py     — Python 3 AST 변환기
├── js2han.py     — JavaScript 정규식 변환기
├── c2han.py      — C 타입 제거 변환기
├── rs2han.py     — Rust 소유권 제거 변환기
├── go2han.py     — Go 변환기
└── vhdl2han.py   — VHDL → 하드웨어.한선 변환기

해결된 주요 버그

  1. JS else if 누락if 먼저 매치돼서. 순서를 else ifelseif 로 고정
  2. regex \s* 줄넘김[ \t]* 로 제한
  3. regex group3 공백 시작(?![ \t]*\{)\s*(\S...) 로 강제
  4. Rust 암시적 반환 — 함수 마지막 식 → 반환 X 자동 삽입
  5. Go 변환 순서for i := 0convert_var에 먼저 잡혀 파괴, for → var 순서로 변경
  6. VHDL <= 할당이 = 비교 변환에 휩쓸림@@ASSIGN@@ 임시 마커로 보호

잔여 이슈

  • VHDL end architecture; 처리 불완전 — 컴파일 실패, 수동 정리 필요
  • 모든 변환기: 복잡한 타입 추론/제네릭/매크로 미지원
  • 오류 처리: try/catch/panic은 한선씨 시도/오류 로 부분 매핑만

다음 (C군 — HDL/FPGA 하드웨어 주권)

  • C-27 .회로 방언 컴파일러 통합 (hanseonc_dialect 활성화)
  • C-28 ISA729 HDL opcode 470-479 완전 구현
  • C-29 .회로 → Verilog 브릿지 (공개 도구 호환)
  • C-30~36 타이밍/FPGA 비트스트림/파형/IGLOO2/LUT-DSP-BRAM

현재 진척도 (92개 중)

  • A군 (3Layer 자동화): 5/8 완료 (62.5%)
  • B군 (언어 변환기): 6/18 완료 (33.3%)
  • 전체: 11/92 (12%)