Home | History | Annotate | Download | only in Framework
      1 // [The "BSD licence"]
      2 // Copyright (c) 2006-2007 Kay Roepke
      3 // All rights reserved.
      4 //
      5 // Redistribution and use in source and binary forms, with or without
      6 // modification, are permitted provided that the following conditions
      7 // are met:
      8 // 1. Redistributions of source code must retain the above copyright
      9 //    notice, this list of conditions and the following disclaimer.
     10 // 2. Redistributions in binary form must reproduce the above copyright
     11 //    notice, this list of conditions and the following disclaimer in the
     12 //    documentation and/or other materials provided with the distribution.
     13 // 3. The name of the author may not be used to endorse or promote products
     14 //    derived from this software without specific prior written permission.
     15 //
     16 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     17 // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     18 // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     19 // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     20 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     21 // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     22 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     23 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     24 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     25 // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     26 
     27 #import "ANTLRTree.h"
     28 #import "ANTLRToken.h"
     29 // TODO: this shouldn't be here...but needed for invalidNode
     30 #import "ANTLRCommonTree.h"
     31 
     32 @implementation ANTLRTree
     33 
     34 @synthesize isEmpty;
     35 @synthesize isEmptyNode;
     36 @synthesize invalidNode;
     37 @synthesize children;
     38 
     39 #pragma mark ANTLRTree protocol conformance
     40 
     41 + (id<ANTLRTree>) invalidNode
     42 {
     43 	static id<ANTLRTree> invalidNode = nil;
     44 	if (!invalidNode) {
     45 		invalidNode = [[ANTLRCommonTree alloc] initWithTokenType:ANTLRTokenTypeInvalid];
     46 	}
     47 	return invalidNode;
     48 }
     49 
     50 - (id<ANTLRTree>) init
     51 {
     52 	self = [super init];
     53 	if ( self != nil ) {
     54 		isEmptyNode = NO;
     55 	}
     56 	return self;
     57 }
     58 
     59 - (void) dealloc
     60 {
     61 	[super dealloc];
     62 }
     63 
     64 - (id<ANTLRTree>) getChild:(NSUInteger) index
     65 {
     66 	return nil;
     67 }
     68 
     69 - (NSUInteger) getChildCount
     70 {
     71 	return 0;
     72 }
     73 
     74 - (NSArray *) getChildren
     75 {
     76 	return nil;
     77 }
     78 
     79 	// Add tree as a child to this node.  If tree is nil, do nothing.  If tree
     80 	// is an empty node, add all children of tree to our children.
     81 
     82 - (void) addChild:(id<ANTLRTree>) tree
     83 {
     84 }
     85 
     86 - (void) addChildren:(NSArray *) theChildren
     87 {
     88 }
     89 
     90 - (void) removeAllChildren
     91 {
     92 }
     93 
     94 	// Indicates the node is an empty node but may still have children, meaning
     95 	// the tree is a flat list.
     96 
     97 - (BOOL) isEmpty
     98 {
     99 	return isEmptyNode;
    100 }
    101 
    102 - (void) setIsEmpty:(BOOL)emptyFlag
    103 {
    104 	isEmptyNode = emptyFlag;
    105 }
    106 
    107 #pragma mark ANTLRTree abstract base class
    108 
    109 	// Return a token type; needed for tree parsing
    110 - (NSInteger) getType
    111 {
    112 	return 0;
    113 }
    114 
    115 - (NSString *) getText
    116 {
    117 	return [self description];
    118 }
    119 
    120 	// In case we don't have a token payload, what is the line for errors?
    121 - (NSInteger) getLine
    122 {
    123 	return 0;
    124 }
    125 
    126 - (NSInteger) getCharPositionInLine
    127 {
    128 	return 0;
    129 }
    130 
    131 - (NSString *) treeDescription
    132 {
    133 	return @"";
    134 }
    135 
    136 - (NSString *) description
    137 {
    138 	return @"";
    139 }
    140 
    141 - (void) _createChildrenList
    142 {
    143 	if ( children == nil )
    144 		children = [[NSMutableArray alloc] init];
    145 }
    146 
    147 @end
    148 
    149 @end