← 목록
컴파일러 2026-04-14 5KB 읽기 5분

한선씨 컴파일러 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. 접근제어 (공개/비공개)

  • StructDeffield_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건 (해당 영역 기존 패턴 부재)
라이브러리: 59 → 63 (+4). 의미코드: 88 → 832 (+744).