hansunc.crowny.org JS 모듈 3종 업그레이드 — FPGA/8방향 번역
개요
hansunc.crowny.org의 핵심 JS 모듈 3개를 확장·신규 작성.
무엇을 했는지
1. translator.js — 4방향 → 8방향 확장
- 위치:
/Users/ef/crowny-hansunc/public/js/translator.js
- 기존 4방향 (한선씨↔Python/JS/C) → 8방향 확장
- 추가 언어: Rust, Go, Verilog(회로방언), VHDL(회로방언)
hanseonToRust(): let mut, fn, println!, .to_string() 등 Rust 관용구 변환
hanseonToGo(): package main + import 자동 생성, := 대입, fmt.Println 변환
hanseonToVerilog(): module/always/posedge/wire/reg 완전 매핑
hanseonToVHDL(): entity/architecture/signal/rising_edge 완전 매핑
toHanseon(): Rust/Go/Verilog/VHDL → 한선씨 역방향도 구현
- IR 중간표현 경유 옵션 (
useIR=true, buildIR() 함수)
- DOM 연결: srcLang/dstLang select에 4개 언어 옵션 동적 추가
2. highlighter.js — FPGA/RPN/3진 구문강조 추가
- 위치:
/Users/ef/crowny-hansunc/public/js/highlighter.js
- FPGA 회로방언 19개 키워드 (회로, 끝회로, 입력, 출력, 양방향, 신호, 레지스터, @상승, @하강, @조합, 대입, 인스턴스, 선택, 생성반복, 시뮬, 대기, 표시, 파형저장, 종료)
- RPN 스택 키워드 14개 (더해, 빼, 곱해, 나눠, 같다, 다르다, 작다, 크다, 점프, 아니면점프, 호출, 반환, 보여줘, 끝)
- 3진 연산 5개 (삼진AND, 삼진OR, 삼진NOT, 삼진전가산기, 트릿)
- @상승/@하강/@조합:
@ 접두어 인식 토크나이저 추가
- playground.css에 .hl-fpga (#ff6b35), .hl-rpn (#8b5cf6), .hl-ternary (#a78bfa) 추가
3. fpga.html — FPGA 시뮬레이터 페이지 신규 (487줄)
- 위치:
/Users/ef/crowny-hansunc/public/fpga.html
- 에디터: highlighter.js 연동 overlay 방식, Tab 들여쓰기 지원
- 회로도: SVG 로직 게이트 시각화 (입력 포트·출력 포트·신호·인스턴스)
- 파형: Canvas VCD 스타일 3진 타이밍 다이어그램 (-1/0/+1 각각 A/O/T 색)
- 변환: Verilog 결과 탭 + VHDL 결과 탭 (translator.js 활용)
- 시뮬: POST /api/fpga/simulate 서버 호출 + 브라우저 폴백
- 내보내기: Verilog(.v) / VHDL(.vhd) 다운로드
- 내장 예제 3개: 3진 전가산기 / D 플립플롭 / 6트릿 리플 캐리 가산기
- 서버 라우트: express.static + extensions:['html'] 로 /fpga 자동 서빙
관련 파일 경로
/Users/ef/crowny-hansunc/public/js/translator.js
/Users/ef/crowny-hansunc/public/js/highlighter.js
/Users/ef/crowny-hansunc/public/css/playground.css
/Users/ef/crowny-hansunc/public/fpga.html
/Users/ef/crowny-hansunc/server.js (POST /api/fpga/simulate 기존 구현)
잔여 이슈
- VHDL 변환: entity port 마지막 항목 세미콜론 제거 미구현 (VHDL 문법 엄밀성)
- Go 변환: strconv import 조건부 추가 미구현
- fpga.html 파형: 서버에서 실제 시뮬 결과 반환 시 waveform 배열→VCD 포맷 매핑 개선 여지
- /fpga 링크를 기존 nav에 직접 추가하려면 다른 HTML 파일들도 수정 필요