aboutsummaryrefslogtreecommitdiff
path: root/antlr-3.4/runtime/ObjC/Framework/ANTLRRewriteRuleNodeStream.m
diff options
context:
space:
mode:
Diffstat (limited to 'antlr-3.4/runtime/ObjC/Framework/ANTLRRewriteRuleNodeStream.m')
-rwxr-xr-xantlr-3.4/runtime/ObjC/Framework/ANTLRRewriteRuleNodeStream.m74
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