한선씨 웹코드 통합 구문 완성
개요
한선씨 RPN으로 웹(DOM/WASM)과 네이티브(framebuffer)에서 동시 동작하는 UI 프레임워크 구축. 크라우니 디자인표준(초콜릿 #3D2B1F / 크림 #FFF8F0 / 골드 #8B6914) 내장.
작업 내용
1단계: RPN 컴파일러 웹 키워드 31개 추가
hanseonc_std.asm— FB(357-369), Event(810-815), DOM(790-799), Font(753-756), WASM(284) 키워드- 라벨 테이블 메모리 레이아웃 수정 (40000→42000, fixup 40200→41000)
- ASM_MAX 8192→16384 확장
2단계: WASM 에미터 DOM opcode 연결
wasm_emit.c— DOM import 10개 추가 (import 18~27)- case 790~799 opcode switch 추가
- 버퍼 확장: wasm[131072→524288], cubes[8192→32768], body[65536→262144]
3단계: 웹코드.한선 라이브러리 (420줄)
- 렌더 타겟 자동 분기 (
_렌더타겟: 0=네이티브, 1=웹) - 디자인 토큰 RGB 정수 (밝은/어두운 테마)
- 통합 렌더 API:
웹코드_사각형,웹코드_텍스트,웹코드_둥근사각형 - 컴포넌트: 카드, 버튼, 골드버튼, 입력, 네비, 뱃지, 구분선
- DOM 전용 API: 요소, 텍스트노드, 클릭, 클래스
- 레이아웃: 세로/가로 스택
- 페이지 템플릿: CSS + 반응형 + 다크모드 + HTML 생성
4단계: hanseonc_high DOM 별칭
- DOM찾기(794), DOM추가(792), DOM내용(797), DOM제거(796), DOM설정HTML(798)
5단계: 예제 앱 + 테스트
apps/웹코드예제.한선— 대시보드 (카드3, 뱃지, 버튼, 입력)- hanseonc_high 컴파일: 19037 cubes 성공
- crownyc run: 네이티브+웹 모드 모두 정상 실행
- crowny-wasm: 113KB WASM 바이너리 생성 성공
- HTML 출력: 3.8KB (디자인표준 CSS 변수 포함)
파이프라인
한선씨(.한선) → hanseonc_high → .toau → crownyc run (네이티브)
한선씨(.한선) → hanseonc_high → .toau → crowny-wasm (웹/WASM)
→ crowny-dom-host.js (브라우저 바인딩)
관련 파일
| 파일 | 변경 |
|---|---|
CrownyOS/crownyc/hanseonc_std.asm | 31 웹 키워드 + 메모리 레이아웃 |
CrownyOS/crownyc/wasm_emit.c | DOM import 10개 + 버퍼 확장 |
CrownyOS/crownyc/hanseonc_high.c | DOM 별칭 5개 |
CrownyOS/crownyc/crownyc.c | ASM_MAX 16384 |
CrownyOS/crownyc/libs/웹코드.한선 | 통합 UI 프레임워크 (420줄) |
CrownyOS/crownyc/apps/웹코드예제.한선 | 대시보드 데모 |
잔여 이슈
- WASM 문자열 핸들 → JS 문자열 변환이 스텁 처리 (crowny-dom-host.js의 readString)
- 이벤트 루프 (네이티브 모드) 미구현 — 정적 렌더링만 가능
- 반응형 레이아웃은 CSS 미디어쿼리 (웹) vs 수동 분기 (네이티브)