diff options
Diffstat (limited to 'antlr-3.4/runtime/ObjC/Framework/ANTLRRewriteRuleNodeStream.m')
-rwxr-xr-x | antlr-3.4/runtime/ObjC/Framework/ANTLRRewriteRuleNodeStream.m | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/antlr-3.4/runtime/ObjC/Framework/ANTLRRewriteRuleNodeStream.m b/antlr-3.4/runtime/ObjC/Framework/ANTLRRewriteRuleNodeStream.m new file mode 100755 index 0000000..8dfedd7 --- /dev/null +++ b/antlr-3.4/runtime/ObjC/Framework/ANTLRRewriteRuleNodeStream.m @@ -0,0 +1,74 @@ +// +// ANTLRRewriteRuleNodeStream.m +// ANTLR +// +// Created by Kay Röpke on 7/16/07. +// Copyright 2007 classDump. All rights reserved. +// + +#import "ANTLRRewriteRuleNodeStream.h" +#import "ANTLRRuntimeException.h" + +@implementation ANTLRRewriteRuleNodeStream + ++ (ANTLRRewriteRuleNodeStream*) newANTLRRewriteRuleNodeStream:(id<ANTLRTreeAdaptor>)aTreeAdaptor description:(NSString *)anElementDescription; +{ + return [[ANTLRRewriteRuleNodeStream alloc] initWithTreeAdaptor:aTreeAdaptor description:anElementDescription]; +} + ++ (ANTLRRewriteRuleNodeStream*) newANTLRRewriteRuleNodeStream:(id<ANTLRTreeAdaptor>)aTreeAdaptor description:(NSString *)anElementDescription element:(id)anElement; +{ + return [[ANTLRRewriteRuleNodeStream alloc] initWithTreeAdaptor:aTreeAdaptor description:anElementDescription element:anElement]; +} + ++ (ANTLRRewriteRuleNodeStream*) newANTLRRewriteRuleNode:(id<ANTLRTreeAdaptor>)aTreeAdaptor description:(NSString *)anElementDescription elements:(NSArray *)theElements; +{ + return [[ANTLRRewriteRuleNodeStream alloc] initWithTreeAdaptor:aTreeAdaptor description:anElementDescription elements:theElements]; +} + +- (id) initWithTreeAdaptor:(id<ANTLRTreeAdaptor>)aTreeAdaptor description:(NSString *)anElementDescription +{ + if ((self = [super initWithTreeAdaptor:aTreeAdaptor description:anElementDescription]) != nil) { + dirty = NO; + isSingleElement = YES; + } + return self; +} + +- (id) initWithTreeAdaptor:(id<ANTLRTreeAdaptor>)aTreeAdaptor description:(NSString *)anElementDescription element:(id)anElement +{ + if ((self = [super initWithTreeAdaptor:aTreeAdaptor description:anElementDescription element:anElement]) != nil) { + dirty = NO; + } + return self; +} + +- (id) initWithTreeAdaptor:(id<ANTLRTreeAdaptor>)aTreeAdaptor description:(NSString *)anElementDescription elements:(NSArray *)theElements +{ + if ((self = [super init]) != nil) { + dirty = NO; + } + return self; +} + + +- (id) nextNode +{ + if (dirty || (cursor >= [self size] && [self size] == 1)) + return [treeAdaptor dupNode:[self _next]]; + else + return [self _next]; +} + +- (id<ANTLRBaseTree>) toTree:(id<ANTLRBaseTree>)element +{ + return [treeAdaptor dupNode:element]; +} + +- (id) dup:(id)element +{ + return [treeAdaptor dupTree:element]; + @throw [ANTLRRuntimeException newException:@"ANTLRUnsupportedOperationException" reason:@"dup can't be called for a node stream."]; +} + +@end |