ここでParseKitの開発者。
質問を完全に理解できるかどうかはわかりませんが、多少見当違いのように聞こえると思います。
サブトークンまたは文字を一致させる方法を探している場合は、正規表現がParseKitよりもニーズに適している可能性があります。
ParseKit文法は、ParseKitトークナイザー(PKTokenizer
クラス)によって生成されたトークンと一致します。個々のキャラクターではありません。
の入力からとトークンPKTokenizer
を生成することが不可能というわけではありません。しかし、それは私が賢明でなく、不必要に複雑と呼ぶコードのカスタマイズを必要とするでしょう。それは悪い考えだと思います。pre
view
preview
とにかく(正規表現ではなく)ParseKitを使用する場合は、(文法ではなく)アセンブラーコールバックでサブ解析を実行するだけです。
だから文法で:
@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 Grammarsは、RegExを介した一致するトークンをサポートしていることを忘れないでください。したがって、次で終わるすべての単語を一致させたい場合view
:
@start = anyView;
anyView = /\b\w*?view\b/;
お役に立てば幸いです。