1

ParseKit を使用して PGN ファイルを解析しようとしています。トークンの種類を認識し、その後の回答を取りたい

PKTokenizer *t = [PKTokenizer tokenizerWithString:moveString];
[t.symbolState add:@"..."];
[t setTokenizerState:t.commentState from:'{' to:'{'];
[t.commentState addMultiLineStartMarker:@"{" endMarker:@"}"];
[t setTokenizerState:t.wordState from:'$' to:'$'];    
t.commentState.reportsCommentTokens = YES;
PKToken *eof = [PKToken EOFToken];
PKToken *tok = nil;

while ((tok = [t nextToken]) != eof) {
    NSLog(@" %@", [tok debugDescription]);
}        

(シンボルが受信された場合にのみ、配列に単語型を追加したい。

ParseKit の使用に関するドキュメントは非常に役立ちます ありがとう

4

1 に答える 1

1

ParseKitの開発者はこちら。

括弧内のトークンをキャプチャする簡単な方法を次に示します。

BOOL inParens = NO;
PKToken *openParen = [PKToken tokenWithTokenType:PKTokenTypeSymbol stringValue:@"(" floatValue:0.0];
PKToken *closeParen = [PKToken tokenWithTokenType:PKTokenTypeSymbol stringValue:@")" floatValue:0.0];
NSMutableArray *cache = [NSMutableArray array];

PKTokenizer *t = [PKTokenizer tokenizerWithString:@"foo (bar) baz"];

PKToken *eof = [PKToken EOFToken];
PKToken *tok = nil;
while ((tok = [t nextToken]) != eof) {
    if ([openParen isEqual:tok]) {
        inParens = YES;
    } else if (inParens) {
        if ([closeParen isEqual:tok]) {
            inParens = NO;
        } else {
            [cache addObject:tok];
        }
    }
}

NSLog(@"%@", cache);

版画:

(
    bar
)
于 2012-06-28T04:10:27.420 に答える