B군 트랜스파일러 6개 완성 (B-9~B-14)
개요
외부 언어 → 한선씨 자동 변환 MVP 6개. Python부터 VHDL까지.
모두 /Users/ef/CrownyOS/crownyc/tools/transpile/ 에 위치.
완료 변환기
| ID | 입력 | 도구 | 상태 |
|---|---|---|---|
| B-9 | Python 3 | py2han.py | ✓ AST 기반, fibonacci+f-string 컴파일·실행 |
| B-10 | JavaScript | js2han.py | ✓ 정규식 기반, template literal, arrow 지원 |
| B-11 | C | c2han.py | ✓ 타입 제거, printf 포맷 자동분해, main 자동호출 |
| B-12 | Rust | rs2han.py | ✓ 암시적 반환, let mut, println! 플레이스홀더 |
| B-13 | Go | go2han.py | ✓ :=, for 3종, fmt.Printf, 괄호 없는 if/for |
| B-14 | VHDL | vhdl2han.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 → 하드웨어.한선 변환기
해결된 주요 버그
- JS
else if누락 —if먼저 매치돼서. 순서를else if→else→if로 고정 - regex
\s*줄넘김 —[ \t]*로 제한 - regex group3 공백 시작 —
(?![ \t]*\{)\s*(\S...)로 강제 - Rust 암시적 반환 — 함수 마지막 식 →
반환 X자동 삽입 - Go 변환 순서 —
for i := 0이convert_var에 먼저 잡혀 파괴, for → var 순서로 변경 - 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%)