1// [The "BSD licence"] 2// Copyright (c) 2006-2007 Kay Roepke 2010 Alan Condit 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 28#import <Cocoa/Cocoa.h> 29 30#ifndef DEBUG_DEALLOC 31#define DEBUG_DEALLOC 32#endif 33 34typedef enum { 35 ANTLRTokenTypeEOF = -1, 36 ANTLRTokenTypeInvalid, 37 ANTLRTokenTypeEOR, 38 ANTLRTokenTypeDOWN, 39 ANTLRTokenTypeUP, 40 ANTLRTokenTypeMIN 41} ANTLRTokenType; 42 43typedef enum { 44 ANTLRTokenChannelDefault = 0, 45 ANTLRTokenChannelHidden = 99 46} ANTLRTokenChannel; 47 48#define HIDDEN 99 49 50@protocol ANTLRToken < NSObject, NSCopying > 51 52@property (retain, getter = text, setter = setText:) NSString *text; 53@property (assign) NSInteger type; 54@property (assign) NSUInteger line; 55@property (assign) NSUInteger charPositionInLine; 56 57// The singleton eofToken instance. 58+ (id<ANTLRToken>) eofToken; 59// The default channel for this class of Tokens 60+ (ANTLRTokenChannel) defaultChannel; 61 62// provide hooks to explicitely set the text as opposed to use the indices into the CharStream 63- (NSString *) text; 64- (void) setText:(NSString *)theText; 65 66- (NSInteger)type; 67- (void) setType: (NSInteger) aType; 68 69// ANTLR v3 provides automatic line and position tracking. Subclasses do not need to 70// override these, if they do not want to store line/pos tracking information 71- (NSUInteger)line; 72- (void) setLine: (NSUInteger) aLine; 73 74- (NSUInteger)charPositionInLine; 75- (void) setCharPositionInLine:(NSUInteger)aCharPositionInLine; 76 77// explicitely change the channel this Token is on. The default parser implementation 78// just sees the defaultChannel 79// Common idiom is to put whitespace tokens on channel 99. 80- (NSUInteger)channel; 81- (void) setChannel: (NSUInteger) aChannel; 82 83// the index of this Token into the TokenStream 84- (NSInteger) getTokenIndex; 85- (void) setTokenIndex: (NSInteger) aTokenIndex; 86- (NSString *)toString; 87 88@end 89 90