← 목록
기타 2026-05-19 3KB 읽기 4분

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 파일들도 수정 필요