ParseKitの文法構文(デモアプリケーションで遊んでいます)で少し掴んでいますが、私は現在自分のミニデモを稼働させようとしていますが、これまでのところ大きな成功はありません。アセンブラのコールバックは呼び出されません。ParseKitアセンブラのコールバックが呼び出されない:何が間違っているのですか?
は以下関連コードの要約版です。 testParse
を実行すると、パーサは正常に動作していると思われ、anything
のプロダクション(デモでも動作します)に正しく一致しますが、didMatchAnything:は呼び出されません。
assembler
がnilであるため、
[assembler performSelector:assemblerSelector withObject:self withObject:a];
PKParserの129は、実行されていないことのラインを見ることができますParseKitコードの周り掘り
#import <Foundation/Foundation.h>
@class PKParser;
@interface FileParserThing : NSObject {
PKParser* _parser;
}
- (void)testParse;
@end
#import <ParseKit/ParseKit.h>
#import "FileParserThing.h"
@interface FileParserThing()
@property (nonatomic, retain)PKParser* parser;
- (void)didMatchAnything:(PKAssembly *)a;
@end
@implementation FileParserThing
@synthesize parser = _parser;
-(id)init
{
if (!(self = [super init])) return nil;
NSString *g = @"@start = anything; anything = Any+;";
self.parser = [[PKParserFactory factory] parserFromGrammar:g assembler:self];
return self;
}
- (void)testParse
{
NSString *s = @"Foo Bar";
NSLog(@"test parse with: %@", s);
[self.parser parse:s];
}
- (void)didMatchAnything:(PKAssembly *)a
{
NSLog(@"Hooray!");
}
@end
。これは私をパーサー工場に導いてくれます。何が起こっているのかについての私の理解が失敗し始めます。
免責事項私はおそらく、本を読む必要があることを知っていますが、一度に1つのことです。私は私のプロジェクトはここParseKitの非スターター:)
リッチでは、私の推奨する調整でここにあなたの例をセットアップしました。それはうまくいくように見えます。 –
素晴らしいこと、それはそれをしました。このような迅速な対応に非常に感謝しています! – Rich
エラー:paramsや新しいパーサー:paramの使用法など、最新の例をウェブサイトに反映させることができれば素晴らしいでしょう。さもなければ、ParseKitはすごく見える! – Grimless