내부 구조 · compile
질의 컴파일러
분석 후보
Lexicon lookup은 표제어, coarse POS와 user entry를 조합해 가능한 분석을 모두 반환합니다. 명시적 POS는 세부 품사 범위를 제한하지만 같은 범주 안의 중의성은 유지합니다.
각 분석에는 stem alternation, particle·ending start state, derivation path와 원문 capability 요구사항이 있습니다.
program IR
CandidateProgram은 anchor bytes, core 조립, suffix automaton, boundary와 StructuralConstraint를 담습니다. Provenance는 lexical·derivation·ending rule ID의 순서 있는 경로입니다.
리소스가 필요한 constraint는 컴파일 결과에 capability로 남습니다. Matcher를 만들 때 리소스가 없으면 즉시 오류를 반환합니다.
query 결합
Phrase는 atom별 plan을 순서대로 유지하고 matcher에서 --max-gap으로 결합합니다. Disjunction은 각 대안의 분석과 프로그램을 하나의 logical atom으로 합칩니다.
Disjunction origin의 analysis index는 합쳐진 분석 배열에 맞춰 다시 매핑합니다. 같은 span을 만드는 대안은 결과를 중복하지 않고 모든 origin을 보존합니다.
정렬과 중복 제거
프로그램은 anchor, 실행 조건과 span projection으로 만든 일정한 key에 따라 정렬합니다. 실행 조건이 같은 분석은 프로그램을 합치고 origin 집합만 union합니다.
Plan 상한은 프로그램·anchor와 structural state 폭을 제한합니다. 상한을 넘으면 일부 후보를 버리지 않고 컴파일 오류를 반환합니다.