한선씨 컴파일러 Phase 1~3 완료 — 메서드/제네릭/접근제어 + 라이브러리 4종 + 의미코드 832개
개요
hanseonc_high 컴파일러에 객체지향 기본 3종(메서드 버그수정, 제네릭 수락, 공개/비공개 접근제어)을 추가하고, SPA/폼/상태관리 라이브러리 4종을 신규 작성, 크라우니사전을 88→832개로 확장한 세션.
Phase 1 — 컴파일러 확장 (hanseonc_high.c)
1-1. 메서드 문법 스택 순서 버그 수정
- 증상:
p.인사("안녕")호출 시자기에 인자 문자열이,말에 객체가 바인딩되어 쓰레기값 출력 (-2147483647: 1190000). - 원인: 호출부가
args → 자기순으로 push, 정의부는frame_enter가 역순 pop →params[0]=자기가말위치를 차지. - 수정:
hanseonc_high.c:1749-1773— 인자 파싱 전에자기(객체)를 먼저 push. 스택 순서[자기, arg1, arg2, ...]확보.
1-2. 제네릭 기본 지원
함수 최대<T>,구조체 상자<T>,메서드 꺼내기<T>()수락.skip_type_params()헬퍼 추가 —<~>사이를 depth counter로 스킵 (중첩<T, 목록<U>>지원).- 전방선언
static void skip_type_params(void);추가. - 한선씨는 동적타입이므로 런타임에는 무시, 타입 힌트/문서화 용도.
1-3. 접근제어 (공개/비공개)
StructDef에field_private[MAX_FIELDS],method_private[MAX_FIELDS]추가.- 구조체 파싱:
구조체 계좌 { 공개 주인, 비공개 잔액 }수식어 수용. - 메서드 파싱:
메서드 비공개 계좌.로그()수식어 수용. - 전역
current_method_si추적 — 메서드 본문 진입/이탈 시 set/restore. - 필드 접근 시 "비공개 필드 + 메서드 외부" 경고 발행.
Phase 2 — 신규 라이브러리 4종
| 라이브러리 | 주요 API |
|---|---|
상태관리.한선 | 저장소만들기, 상태설정/읽기, 되돌리기, 상태버전, 이력길이 |
폼.한선 | 폼만들기, 필드선언(규칙배열), 값설정, 폼검증, 오류목록, 유효한가 |
클라이언트라우터.한선 | 클라라우터생성, 경로등록, 이동/대체/뒤로/앞으로, 현재매칭, 파라미터 |
HTTP인터셉터.한선 | 인터셉터생성, 요청/응답훅추가, 요청통과, 응답통과, 훅개수 |
- 폼: 규칙 문자열 방식 (
"필수","이메일","길이:2:20","숫자:0:120","SQL안전"). - 라우터: 이력 스택 + 커서 기반 뒤로/앞으로, 해시/히스토리 모드.
- 인터셉터: axios 대응, 요청훅(헤더/쿼리/로깅), 응답훅(로깅/상태검사/재시도).
Phase 3 — 의미코드 사전 확장
CROWNY_DICT.md: 182줄 → 948줄.- 고유
@의미코드: 88 → 832 (+744). - 자동추출 bash 스크립트로
libs/*.한선102개 라이브러리에서 공개함수 최대 8개씩 생성 → 섹션 8 "라이브러리 함수".
관련 파일
/Users/ef/CrownyOS/crownyc/hanseonc_high.c— 컴파일러 수정 5곳/Users/ef/CrownyOS/crownyc/libs/상태관리.한선— 신규/Users/ef/CrownyOS/crownyc/libs/폼.한선— 신규/Users/ef/CrownyOS/crownyc/libs/클라이언트라우터.한선— 신규/Users/ef/CrownyOS/crownyc/libs/HTTP인터셉터.한선— 신규/Users/ef/CrownyOS/crownyc/pkg/docs/CROWNY_DICT.md— 확장/Users/ef/CrownyOS/crownyc/test_method.한선,test_generic.한선,test_access.한선,test_state.한선,test_form.한선,test_croute.한선,test_intercept.한선— 테스트 7종
한선씨 예약어 주의 (다른 세션 참조)
식별자(변수명/파라미터/함수명)로 쓸 수 없음:
오류— TOK_CATCH (try/catch)시도— TOK_TRY메서드— TOK_METHOD전이— 예약어 (상태이동으로 대체)가져오기— 모듈 임포트
오류목록, HTTP동작 등).잔여 이슈
상태비우기후상태있는가가 부정확 — VM 해시맵이 이전 버킷 유지. 한선씨 맵은 "키 없음"을 값0과 구분 못함. 워크어라운드: 별도 sentinel 값 사용.- 필드 할당
자기.잔액 = 값미지원 — 별도 기능 필요 (다음 Phase 후보). - 중첩 배열 인덱싱
arr[i][j]미지원 — 중간변수 필요. 파서 확장 후보. - 접근제어 경고는 현재 정적 룩업(해당 이름의 비공개 필드가 어떤 구조체에든 존재하면 경고). 동적타입이라 완전한 정적 검사는 불가.
비중
- 클로드 직접 생성 (.한선): 11건 (libs 4, 테스트 7)
- 컴파일러 C 수정: 5곳
- 자동추출(규칙기반): 757줄 사전 항목
- 패턴DB 재사용: 0건 (해당 영역 기존 패턴 부재)