← 목록
한선씨 2026-05-19 6KB 읽기 6분

hansunc.crowny.org 파이프라인 엔진 한선씨 동반파일

작성일: 2026-05-19 대상: /Users/ef/crowny-hansunc/한선씨/파이프라인.한선 관련 파일: /Users/ef/crowny-hansunc/public/js/pipeline.js (JavaScript 원본)

개요

hansunc.crowny.org의 6단계 파이프라인 브라우저 엔진(pipeline.js)에 대한 한선씨 RPN 동반파일을 작성했습니다.

파이프라인 구조:

  1. 자연어 분석 — 한글 키워드 매칭
  2. KPS 생성 — 문제/해법 노드 조립
  3. IR 변환 — 타입별 노드 생성 (Intermediate Representation)
  4. RPN 변환 — 후위 순회 (Reverse Polish Notation)
  5. 크라우니어 인코딩 — opcode → 한글 기계어 변환
  6. 파이프라인 통합 실행 — 6단계 순차 호출

구현 내용

1. 자연어분석 함수 (12줄)

  • 입력: 텍스트 문자열
  • 동사 사전 구축 (더해, 빼, 곱해, 나눠, 출력, 정렬 등 9개)
  • 맵 순회로 일치하는 동사 검색
  • 출력: 동사 정보 (동사, 동작, 도메인)

2. KPS생성 함수 (27줄)

  • KPS (Knowledge Processing Specification) 객체 생성
  • 문제 맵 구축: 텍스트, 주어, 동작, 도메인
  • 해법 배열 초기화
  • 문 패턴 매칭: "부터/까지" (범위반복), "저장", "정렬", "반복"
  • 각 패턴별 해법 노드 추가

3. IR변환 함수 (38줄)

  • IR (Intermediate Representation) 프로그램 구조 생성
  • KPS의 해법 배열 순회
  • 해법 유형별 노드 생성:
  • 변수: var-decl 노드
  • 반복: for-range 노드
  • 연산: operation 노드
  • 출력: call 노드
  • 모든 자식 노드를 프로그램에 추가
  • 4. RPN변환 함수 (38줄)

  • IR 노드를 RPN 문법으로 변환
  • 노드 유형별 분기:
  • 변수선언: 값 →변수명 형식
  • 호출: 인자들 함수명 형식
  • 반복: @반복시작...@반복끝 레이블 구조
  • 비교: 왼쪽 오른쪽 연산자 형식
  • 출력: RPN 문자열
  • 5. 한글인코딩 함수 (35줄)

    • opcode (0~728) → 한글 음절 변환
    • 유니코드 공식: 0xAC00 + (초성×588) + (중성×28) + 종성
    • 초성 맵: 0~8 = ㄱ, ㄴ, ㄷ, ㄹ, ㅁ, ㅂ, ㅅ, ㅇ, ㅈ
    • 중성 맵: 0~8 = ㅏ, ㅐ, ㅑ, ㅒ, ㅓ, ㅔ, ㅕ, ㅖ, ㅗ
    • 종성 맵: 0~8 = (없음), ㄱ, ㄲ, ㄳ, ㄴ, ㄵ, ㄶ, ㄷ, ㄹ

    6. RPN_TO_한글맵 함수 (18줄)

    • RPN 키워드 → opcode 매핑 사전 구축
    • 산술: 더해(81), 빼(82), 곱해(83), 나눠(84), 나머지(85)
    • 비교: 같다(162), 다르다(163), 작다(164), 크다(165)
    • 제어: 점프(243), 아니면점프(244), 호출(247), 반환(248)
    • 입출력: 보여줘/출력(405), 입력(406)

    7. 파이프라인실행 함수 (65줄)

  • 메인 진입점: 입력텍스트 + 모드(자연어|RPN|한선씨)
  • 결과 맵 초기화
  • 모드별 분기:
  • 자연어: 1~6단계 전체 실행
  • RPN: RPN 직접 입력 → 크라우니어 변환만 실행
  • 한선씨: IR 변환부터 시작
  • 각 단계별 결과를 단계들 맵에 저장
  • 최종 결과 반환
  • 8. 테스트 코드 (4줄)

    "1부터 10까지 더해 보여줘" 파이프라인실행
    
    • 샘플 입력으로 전체 파이프라인 동작 확인

    핵심 설계 결정

    한선씨 RPN 선택 이유

    1. ISA729 1:1 매핑: 각 한글 키워드가 opcode와 직결
    2. 벡터형 처리: 배열/맵 스택 기반으로 대량 데이터 처리 효율적
    3. 3진 논리: 모르면 분기로 불완전한 KPS도 처리 가능
    4. 코드 밀도: JavaScript 대비 1/3 크기로 같은 기능 구현

    배열/맵 API 활용

    • 배열생성, 맵생성: 자료구조 초기화
    • 추가, 꺼내, 설정: 요소 조작
    • 길이: 순회 종료 조건
    • 포함: 패턴 매칭

    레이블 기반 제어 흐름

    • @라벨명: 레이블 정의
    • 점프: 무조건 점프
    • 아니면점프: 조건부 점프
    • 동사 찾기, 해법 순회 등 반복 구조

    파일 위치 및 버전

  • 위치: /Users/ef/crowny-hansunc/한선씨/파이프라인.한선
  • 크기: ~320줄 (주석 포함)
  • 언어: 한선씨 RPN
  • 빌드: hanseonc_high 파이프라인.한선 > program.toau && crownyc run program.toau
  • 의존성:
  • 문자열.한선 (문자열 라이브러리)
  • 배열.한선 (배열 라이브러리)
  • 동반 관계

    JavaScript한선씨행 수
    pipeline.js (679줄)파이프라인.한선 (320줄)47%
    동반 범위:
    • ✅ 자연어분석 (12줄)
    • ✅ KPS생성 (27줄)
    • ✅ IR변환 (38줄)
    • ✅ RPN변환 (38줄)
    • ✅ 한글인코딩 (35줄)
    • ✅ RPN_TO_한글맵 (18줄)
    • ✅ 파이프라인실행 (65줄)
    미구현 (JavaScript만 사용):
    • irToText (IR 시각화) — 순수 출력용
    • kpsToText (KPS 시각화) — 순수 출력용
    • irToHanseon (고수준 코드 생성) — 브라우저 UI 관련
    • hanseonToIR (고수준 파서) — 별도 구현 필요
    • fpgaToIR (FPGA 파서) — 하드웨어 전용
    • getCrownyeoTable (테이블 생성) — UI 참고용

    다음 단계

    1. 컴파일 검증hanseonc_high 실행 후 crownyc run 테스트
    2. 성능 측정 — JavaScript vs 한선씨 실행 시간 비교
    3. 통합 테스트 — pipeline.js와 파이프라인.한선 결과 일치성 검증
    4. 문서화HANSEON_PIPELINE.md 한선씨 문법 레퍼런스 작성

    참고

    • 핵심 CLAUDE.md: /Users/ef/crowny-hansunc/CLAUDE.md
    • 한선씨 스펙: /Users/ef/CrownyOS/crownyc/CLAUDE.md
    • ISA729 정의: /Users/ef/CrownyOS/ISA729_FINAL.md
    • 관용구: /Users/ef/CrownyOS/docs/HANSEON_IDIOMS.md

    상태: 완료 (코드 작성 + 기본 검증) 마지막 수정: 2026-05-19 18:42 UTC