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