대규모 언어 모델(Large language models)은 이제 전 세계 코드의 점점 더 많은 비중을 작성하고 있으며, 생성된 코드를 한 줄씩 검토하지 않고 컴파일, 실행 또는 배포하는 에이전트 및 서비스 시스템 내부에서 그 역할이 커지고 있습니다. 이는 주류 언어에는 잘 작동하지만, 도메인 특화 언어(domain-specific languages), 커스텀 라이브러리 API, 명령줄 도구(command-line tools)와 같은 저자원 프로그래밍 인터페이스(low-resource programming surfaces)에 대해서는 여전히 취약합니다. 문법 제약 디코딩(grammar-constrained decoding) 환경에서도 모델은 현재 환경에서 유효하지 않은 참조를 생성할 수 있습니다. 예를 들어, 선언되지 않은 버퍼, 스키마에 없는 컬럼, 라이브러리가 제공하지 않는 함수, 또는 지원되지 않는 CLI 옵션 등이 이에 해당합니다.
본 논문은 디코드 타임 문법(decode-time grammars)을 소개합니다. 이는 런타임 환경 $\Gamma$로부터 생성 중에 인스턴스화되는 문법 파편(grammar fragments)입니다. 영역 특화 정책(region-specific policy)이 각 홀(hole)에 대해 파편을 선택하며, 조임 연산자(tightening operator)는 열린 참조 위치를 해당 시점에 사용 가능한 이름, 필드, API 또는 옵션과 정확히 일치하는 후보를 가진 $\Gamma$-타입 슬롯($\Gamma$-typed slots)으로 교체합니다. 새로 생성된 선언은 이후 영역이 디코딩되기 전에 $\Gamma$에 진입하므로, 제약 문법은 이미 생성된 접두사(prefix)에 의존할 수 있습니다. 이를 통해 정의되지 않은 심볼에 대한 참조를 방지함으로써 문법적 정확성뿐만 아니라 의미론적 정확성(semantic correctness)을 보장합니다.
우리는 문법 파편을 정제(refinement)에 의해 순서가 정해진 환경 인덱스 문법(environment-indexed grammars)으로 공식화하고, $\Gamma$-슬롯이 지정된 파편에 대해 No-Ghost 건전성(soundness)을 증명하며, 정제가 이러한 지원 집합(support-set) 보장을 유지함을 보여주고, 마스크 강제 가능 속성(mask-enforceable properties)의 경계를 규정합니다. 우리는 오프라인 문법 유도(offline grammar induction) 및 온라인 정책 결정(online policy resolution)을 포함하는 gproj에 이 접근 방식을 구현했습니다. TileLang, SQL, P4에 대해 0.6B에서 236B 파라미터 규모의 모델을 사용하여 실험한 결과, gproj는 표준 제약 디코딩 대비 적절한 오버헤드로 구성 단계에서 고스트 참조(ghost references)를 제거함을 확인했습니다.