/antlr-3.4/runtime/ObjC/Framework/ANTLRRewriteRuleNodeStream.m
# · Objective C · 74 lines · 54 code · 13 blank · 7 comment · 11 complexity · 4d2745dfce81547be3f6ff20b631b9d4 MD5 · raw file
- //
- // 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