← 목록
컴파일러 2026-04-24 4KB 읽기 4분

hanseonc_high Phase 1-3: 컴파일러 강화 + 라이브러리 4종 + 의미코드 832개

개요

hanseonc_high 고수준 컴파일러에 접근제어·제네릭·메서드 수정을 가하고, 프론트엔드 대응 라이브러리 4종을 신규 작성하고, 의미코드 사전을 88→832개로 확장한 작업.

Phase 1 — 컴파일러 수정 (hanseonc_high.c)

1-1. 메서드 인자 스택 순서 수정

  • 문제: 사람.인사("안녕") 호출 시 인자가 역순으로 전달
  • 수정: parse_method_call에서 스택 순서 보정

1-2. 제네릭 기본 지원

  • 구조체 박스<T> { 값 } 형태의 <T, U> 파싱 수락
  • skip_type_params() 함수 추가 — 타입 파라미터를 건너뛰되 무시 (동적 타입이라 런타임 영향 없음)

1-3. 접근제어 (공개/비공개)

  • 구조체 계좌 { 공개 주인, 비공개 잔액 } 문법
  • 메서드 비공개 계좌.로그() — 메서드 접근제어
  • StructDeffield_private[], method_private[] 추가
  • 비공개 필드를 메서드 외부에서 접근하면 [경고] 출력
  • current_method_si 추적으로 메서드 본문 내부 접근 허용

Phase 2 — 라이브러리 4종 신규 (libs/ 59→63)

2-1. 상태관리.한선 (Redux/Pinia 대응)

  • API: 저장소만들기, 상태설정, 상태읽기, 상태있는가, 상태지우기, 상태버전, 되돌리기, 상태비우기
  • 이력 스택 기반 되돌리기(undo) 지원
  • 알려진 제한: 상태비우기상태있는가가 VM 해시맵 한계로 부정확

2-2. 폼.한선 (React Hook Form 대응)

  • 규칙 문자열 기반: ["필수", "이메일", "길이:2:20", "숫자:0:120", "SQL안전", "경로안전"]
  • API: 폼만들기, 필드선언, 값설정, 값읽기, 폼검증, 폼유효한가, 오류목록, 폼초기화
  • 한국어 조사 오류 메시지

2-3. 클라이언트라우터.한선 (SPA 라우팅)

  • 해시/히스토리 모드 선택
  • 동적 파라미터: /글/:아이디, /사용자/:이름/글
  • 이력 스택, 뒤로가기/앞으로가기, 대체(replaceState)
  • API: 클라라우터생성, 경로등록, 이동, 대체, 뒤로, 앞으로, 현재경로, URL로, 매개변수

2-4. HTTP인터셉터.한선 (axios interceptors 대응)

  • 요청훅: 헤더추가, 쿼리추가, 본문로깅
  • 응답훅: 상태검사, 본문로깅, 지연재시도
  • API: 인터셉터생성, 요청훅추가, 응답훅추가, 요청통과, 응답통과, 초기화
  • 예약어 충돌 해결: 메서드동작, 시도횟수, 오류잘못목록

Phase 3 — 의미코드 한글화 (CROWNY_DICT.md 88→832)

  • 102개 라이브러리에서 공개 함수 자동 추출 (bash 스크립트)
  • 파일별 최대 8개씩 @의미코드 = 한글함수명 엔트리 생성
  • 섹션 8 "라이브러리 함수" 신설
  • 수작업 0줄, 규칙기반 생성 757줄

예약어 충돌 기록 (다른 세션 참조용)

식별자로 사용 불가한 한선씨 예약어:

  • 오류 — try/catch 관련
  • 시도 — try 관련
  • 메서드 — 메서드 선언 키워드
  • 전이 — 상태 전이 키워드 (상태이동 사용)
  • 가져오기 — import 키워드

관련 파일

  • 컴파일러: /Users/ef/CrownyOS/crownyc/hanseonc_high.c (5곳 수정)
  • 라이브러리: /Users/ef/CrownyOS/crownyc/libs/{상태관리,폼,클라이언트라우터,HTTP인터셉터}.한선
  • 테스트: /Users/ef/CrownyOS/crownyc/test_{access,state,form,croute,intercept}.한선
  • 의미코드: /Users/ef/CrownyOS/crownyc/pkg/docs/CROWNY_DICT.md

잔여 이슈

  1. VM 해시맵에 "키 없음"과 0 구분 불가 → 상태비우기상태있는가 부정확
  2. 접근제어는 컴파일 타임 경고만 (런타임 차단 아님) — 동적 타입 한계
  3. 제네릭 <T> 는 파싱만 수락, 타입 검사 없음 (동적 타입이라 불필요)