한선씨 순수 RPN 전환 프로젝트
개요
한선씨를 순수 한글 + 숫자 + 공백 RPN 언어로 확정하고, 기존 C-like 코드 184개 파일을 전환.
전세계 언어를 한선씨 의미어로 매핑하는 것이 최종 목표.
현황 (전환 전)
| 항목 | C-like (현재) | RPN (목표) |
|---|
| 문법 | 함수 f(n) { 반환 n * n } | .f 복사 곱해 반환 |
| 기호 | {}()=+-*/<>",[]; 15종 | " ; . @ → 5종 |
| 키워드 | 314개 (hanseonc_high) | 353개 (hanseonc_std 확장) |
| 컴파일러 | hanseonc_high.c (C, 3000줄) | hanseonc_std.asm (TOAU, 1547줄) |
| 파일 수 | 184개 (libs 127 + std 49 + ex 8) | 0개 (전환 대상) |
태스크 (의존관계 순서)
#8 RPN 문법 확정 (353개 키워드 스펙) ← 완료
├─ #9 hanseonc_std 컴파일러 보강 (272개 추가)
├─ #10 C-like → RPN 자동 변환기 개발
│ ├─ #11 libs/ 127개 RPN 전환
│ └─ #12 std/ 49개 + examples/ 8개 전환
├─ #14 의미어 체계 확립 (@의미코드 전체 사전)
│ ├─ #13 3레이어 자동화 (T/O/A 생성)
│ └─ #15 전세계 언어 의미어 매핑 (영/중/일)
└─ #16 에이전트 패턴DB RPN 전환
스펙 문서
/Users/ef/CrownyOS/docs/HANSEON_RPN_SPEC.md — v1.0 (2026-04-17 확정)
핵심 규칙
- 한 단어 = 한 opcode (353개)
- 기호 5종만 허용:
" ; . @ →
- 후위 표기법:
3 7 더해 (not 3 + 7)
- 라벨 함수:
.함수명 본문 반환 (not 함수 f() {})
- 화살표 대입:
10 →x (not 변수 x = 10)
- 가져오기:
가져오기 문자열 (따옴표 없이)
구문 대응 예시
; C-like (레거시)
함수 제곱(n) { 반환 n * n }
변수 결과 = 제곱(5)
출력값("결과: " + 문자열변환(결과))
; RPN (정식)
.제곱 복사 곱해 반환
5 @제곱 호출 →결과
"결과: " 결과 문자열변환 문자열연결 보여줘
끝
RPN 키워드 카테고리 (353개)
| 카테고리 | 개수 | 대표 키워드 |
|---|
| 스택/흐름 | 18 | 끝 복사 교환 호출 반환 점프 만약 |
| 산술 | 17 | 더해 빼 곱해 나눠 거듭제곱 루트 |
| 수학 | 12 | 사인 코사인 로그 무작위 팩토리얼 |
| 비교/논리 | 12 | 같다 크다 그리고 또는 참 거짓 모름 |
| 문자열 | 12 | 글자수 부분 포함 문자열변환 |
| 배열/맵 | 10 | 배열 길이 추가 꺼내 맵생성 맵넣어 |
| 파일/환경 | 21 | 읽기 쓰기 파일존재 현재경로 환경변수 |
| TCP/소켓 | 22 | TCP대기 소켓생성 소켓바인드 DNS질의 |
| 버퍼 | 10 | 버퍼생성 버퍼쓰기 버퍼읽기 |
| 셀 | 20 | 셀생성 셀연결 셀읽기 셀결정 셀근거 |
| 3진/트릿 | 18 | 삼진인코딩 비트곱 큐브생성 |
| GUI | 16 | 화면초기화 점찍기 사각형 원그리기 |
| 오디오 | 22 | 음초기화 음톤 음저장 MDCT순변환 |
| AI텐서 | 7 | 삼진누산 삼진벡터 삼진합성곱 |
| 통계/벡터 | 18 | 합계 평균 벡터내적 행렬곱 |
| 동시성 | 10 | 스레드생성 뮤텍스 채널보내 비동기 |
| 프로세스/IPC | 20 | 포크 프로세스띄워 시그널등록 파이프 |
| WebSocket | 8 | WS업그레이드 WS읽기 WS쓰기 |
| DOM | 11 | DOM생성 DOM붙이기 DOM이벤트 |
| 암호/인증 | 9 | SHA256 서명 검증 로그인 |
| 블록체인 | 5 | 블록체인초기화 블록추가 블록해시 |
| 예외/제너레이터 | 10 | 던져 시도진입 코루틴생성 양보 |
| 타입/메모리/기타 | 33 | 타입 주소 할당 반영 가져오기 |
전환 규모 추정
| 작업 | 파일 수 | 난이도 |
|---|
| 컴파일러 보강 | 1 (asm) | 높음 (어셈블리 수정) |
| 자동 변환기 | 1 (신규) | 중간 (파서+생성기) |
| libs/ 전환 | 127 | 대량 (자동+수동) |
| std/ 전환 | 49 | 대량 |
| examples/ 전환 | 8 | 소량 |
| 3레이어 생성 | 184 | 자동화 가능 |
| 의미어 사전 | 1 | 중간 |
| 다국어 매핑 | 3개국어 | 중간 |
| 에이전트 패턴 | 4023건 | 대량 (자동) |
관련 파일
| 파일 | 역할 |
|---|
/Users/ef/CrownyOS/docs/HANSEON_RPN_SPEC.md | RPN 정식 스펙 v1.0 |
/Users/ef/CrownyOS/crownyc/hanseonc_std.asm | RPN 컴파일러 소스 |
/Users/ef/CrownyOS/crownyc/hanseonc_std.toau | RPN 컴파일러 바이너리 |
/Users/ef/CrownyOS/crownyc/hanseonc_high.c | C-like 컴파일러 (레거시) |
/Users/ef/CrownyOS/crownyc/libs/ | 전환 대상 127개 |
/Users/ef/Downloads/CrownyTVM/std/ | 전환 대상 49개 |
/Users/ef/CrownyOS/crownyc/examples/ | 전환 대상 8개 |
완료된 작업
#9 hanseonc_rpn.c — C 기반 RPN 컴파일러 (2026-04-17 완료)
어셈블리(hanseonc_std.asm) 수정 대신 C 기반 신규 작성으로 전략 전환.
- 파일:
/Users/ef/CrownyOS/crownyc/hanseonc_rpn.c (50KB 바이너리)
- 키워드: 353개 전부 지원 (확장 opcode 포함)
- 기능: 변수(→), 라벨(./@), 문자열(""), 주석(;), MACRO 디스패치
- 테스트: 피보나치(55), 셀 결정(T), 프로세스 PID — 모두 통과
bash# 빌드
cc -O2 -o hanseonc_rpn hanseonc_rpn.c
# 사용
./hanseonc_rpn input.한선 > output.toau 2>/dev/null
./crownyc run output.toau
3가지 컴파일러 체제:
| 컴파일러 | 문법 | 용도 |
|---|
| hanseonc_rpn | 순수 RPN (정식) | 신규 코드 |
| hanseonc_high | C-like (레거시) | 기존 184개 파일 |
| hanseonc_std | RPN (자체호스팅) | 부트스트랩 |
다음 단계
- #10 변환기 개발 — C-like → RPN 자동 변환
- #14 의미어 사전 — @의미코드 체계 확립
- #11-12 파일 전환 — 자동 변환기로 184개 파일 RPN화