CLI · 질의
질의 문법
형식 문법
공백은 phrase atom의 경계이며, 따옴표와 escape 밖의 |는 disjunction 경계입니다. Atom은 태그가 붙은 bare text 또는 따옴표로 감싼 literal입니다.
빈 atom, 닫히지 않은 따옴표, 값이 없는 태그, 알 수 없는 태그와 피연산자가 없는 |는 compile 오류입니다.
query = atom / phrase / disjunction
phrase = atom 1*(WS atom)
disjunction = atom 1*(OWS "|" OWS atom)
atom = [pos-tag] (bare / quoted)
pos-tag = "n:" / "v:" / "adj:" / "lit:" / ...
atom과 태그
v:걷다는 동사 분석만, n:걷기는 명사 분석만 허용합니다. 태그가 없으면 전역 --pos 또는 auto가 적용됩니다.
구 질의의 각 atom은 독립된 분석과 프로그램 집합을 가집니다. 한 atom의 태그를 전체 구에 자동으로 적용하지 않습니다.
인용과 escape
"로그 인"은 공백을 포함한 하나의 literal atom입니다. "와 \는 따옴표와 backslash를 문자 그대로 보존합니다.
형태 확장이 필요한 표제어를 따옴표로 감싸도 literal mode가 되지는 않습니다. 인용은 atom 경계만 바꾸고, expansion은 옵션이 결정합니다.
kfind 'v:걷다 "로그 인"' src
kfind --literal 'key\:value' config
대안 검색
걷다|사용자와 걷다 | 사용자는 각 atom 중 하나를 찾는 같은 질의입니다. 각 대안에 품사 태그를 따로 지정할 수 있습니다.
각 대안은 하나의 atom이어야 하며 phrase와 섞을 수 없습니다. --max-gap은 적용되지 않습니다. Literal |는 \| 또는 "|"로 작성합니다.
CLI에서는 셸이 |를 pipe로 해석하지 않도록 질의 전체를 따옴표로 묶습니다.
kfind 'v:걷다|n:사용자|n:검증' src
kfind '\|' syntax.txt
kfind '"|"' syntax.txt