ANTLRRuleStack.h revision 324c4644fee44b9898524c09511bd33c3f12e2df
1ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// 2ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// ANTLRRuleStack.h 3ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// ANTLR 4ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// 5ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// Created by Alan Condit on 6/9/10. 6ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// [The "BSD licence"] 7ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// Copyright (c) 2010 Alan Condit 8ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// All rights reserved. 9ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// 10ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// Redistribution and use in source and binary forms, with or without 11ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// modification, are permitted provided that the following conditions 12ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// are met: 13ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// 1. Redistributions of source code must retain the above copyright 14ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// notice, this list of conditions and the following disclaimer. 15ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// 2. Redistributions in binary form must reproduce the above copyright 16ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// notice, this list of conditions and the following disclaimer in the 17ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// documentation and/or other materials provided with the distribution. 18ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// 3. The name of the author may not be used to endorse or promote products 19ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// derived from this software without specific prior written permission. 20ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// 21ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 22ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 23ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 24ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 25ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 26ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 30ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 32ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#import <Cocoa/Cocoa.h> 33ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#import "ANTLRBaseStack.h" 34ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#import "ANTLRHashRule.h" 35ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 36ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik//#define GLOBAL_SCOPE 0 37ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik//#define LOCAL_SCOPE 1 38ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#define HASHSIZE 101 39ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#define HBUFSIZE 0x2000 40ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 41ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik@interface ANTLRRuleStack : ANTLRBaseStack { 42ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 43ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 44ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// Contruction/Destruction 45ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik+(ANTLRRuleStack *)newANTLRRuleStack; 46ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik+(ANTLRRuleStack *)newANTLRRuleStack:(NSInteger)cnt; 47ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik-(id)init; 48ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik-(id)initWithLen:(NSInteger)cnt; 49ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik-(void)dealloc; 50ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 51ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik// Instance Methods 52ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik- (id) copyWithZone:(NSZone *)aZone; 53ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik/* clear -- reinitialize the maplist array */ 54ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 55ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik- (NSInteger)count; 56ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik- (NSInteger)size; 57ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 58- (ANTLRHashRule *) pop; 59 60- (void) insertObject:(ANTLRHashRule *)aHashRule atIndex:(NSInteger)idx; 61- (ANTLRHashRule *)objectAtIndex:(NSInteger)idx; 62- (void)putHashRuleAtRuleIndex:(NSInteger)aRuleIndex StartIndex:(NSInteger)aStartIndex StopIndex:(NSInteger)aStopIndex; 63@end 64