개발자는 ParseKit입니다.
나는이 질문을 완전히 이해하고 있는지 확신 할 수 없지만, 다소 잘못된 것으로 생각됩니다.
하위 토큰 또는 문자를 일치시키는 방법을 찾고있는 경우 정규식이 ParseKit보다 더 적합 할 수 있습니다.
ParseKit 문법은 ParseKit 토큰 라이저 (PKTokenizer
클래스)가 생성 한 토큰과 일치합니다. 개별 문자가 아닙니다.
PKTokenizer
은 preview
의 입력에서 pre
및 view
토큰을 생성 할 수 없다는 것이 아닙니다. 그러나 나는 현명하지 않고 불필요하게 복잡한 코드를 사용자 정의해야 할 것입니다. 나는 그것이 나쁜 생각이라고 생각한다.
어쨌든 ParseKit (Regex가 아닌)을 사용하려는 경우 어셈블러 콜백 (문법 대신)에서 하위 구문 분석을 간단하게 수행 할 수 있습니다. 그래서 문법에
:
@start = either;
either = 'preview' | 'review';
그리고 ObjC의 :
- (void)parser:(PKParser *)p didMatchEither:(PKAssembly *)a {
PKToken *tok = [a pop];
NSString *str = tok.stringValue;
if ([str hasPrefix:@"pre"]) {
... // handle 'preview'
} else {
... // handle 'review'
}
}
또한 ParseKit 문법은 정규식을 통해 일치하는 토큰을 지원하는 것을 기억하십시오. 따라서 끝나는 단어가 모두 view
인 경우
@start = anyView;
anyView = /\b\w*?view\b/;
희망 사항을 찾으십시오.