📄 antlrcommontoken.m
字号:
// [The "BSD licence"]// Copyright (c) 2006-2007 Kay Roepke// All rights reserved.//// Redistribution and use in source and binary forms, with or without// modification, are permitted provided that the following conditions// are met:// 1. Redistributions of source code must retain the above copyright// notice, this list of conditions and the following disclaimer.// 2. Redistributions in binary form must reproduce the above copyright// notice, this list of conditions and the following disclaimer in the// documentation and/or other materials provided with the distribution.// 3. The name of the author may not be used to endorse or promote products// derived from this software without specific prior written permission.//// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#import "ANTLRCommonToken.h"@implementation ANTLRCommonToken// designated initializer- (ANTLRCommonToken *) initWithInput:(id<ANTLRCharStream>)anInput tokenType:(int)aTType channel:(int)aChannel start:(int)theStart stop:(int)theStop{ if (nil != (self = [super init])) { [self setInput:anInput]; type = aTType; channel = aChannel; start = theStart; stop = theStop; } return self;}- (ANTLRCommonToken *) initWithToken:(ANTLRCommonToken *)aToken{ return [aToken copy];}// create a copy, including the text if available// the input stream is *not* copied!- (id) copyWithZone:(NSZone *)theZone{ ANTLRCommonToken *copy = [super copyWithZone:theZone]; if (copy) { [copy setChannel:channel]; if (text) { NSString *copyOfText = [text copyWithZone:theZone]; [copy setText:copyOfText]; [copyOfText release]; } [copy setStart:start]; [copy setStop:stop]; [copy setIndex:index]; [copy setLine:line]; [copy setCharPositionInLine:charPositionInLine]; [copy setInput:input]; // not a copy, but a reference to the original input stream! } return copy;}// inherited from ANTLRToken//---------------------------------------------------------- // text //---------------------------------------------------------- - (NSString *) text{ if (text != nil) { return text; } if (input == nil) { return nil; } return [input substringWithRange:NSMakeRange(start,stop-start)];}- (void) setText: (NSString *) aText{ if (text != aText) { [aText retain]; [text release]; text = aText; }}//---------------------------------------------------------- // type //---------------------------------------------------------- - (unsigned int) type{ return type;}- (void) setType: (unsigned int) aType{ type = aType;}//---------------------------------------------------------- // line //---------------------------------------------------------- - (unsigned int) line{ return line;}- (void) setLine: (unsigned int) aLine{ line = aLine;}//---------------------------------------------------------- // charPositionInLine //---------------------------------------------------------- - (unsigned int) charPositionInLine{ return charPositionInLine;}- (void) setCharPositionInLine: (unsigned int) aCharPositionInLine{ charPositionInLine = aCharPositionInLine;}//---------------------------------------------------------- // channel //---------------------------------------------------------- - (unsigned int) channel{ return channel;}- (void) setChannel: (unsigned int) aChannel{ channel = aChannel;}// end inherited//---------------------------------------------------------- // input //---------------------------------------------------------- - (id<ANTLRCharStream>) input{ return input; }- (void) setInput: (id<ANTLRCharStream>) anInput{ if (input != anInput) { [anInput retain]; [input release]; input = anInput; }}//---------------------------------------------------------- // start //---------------------------------------------------------- - (unsigned int) start{ return start;}- (void) setStart: (unsigned int) aStart{ start = aStart;}//---------------------------------------------------------- // stop //---------------------------------------------------------- - (unsigned int) stop{ return stop;}- (void) setStop: (unsigned int) aStop{ stop = aStop;}//---------------------------------------------------------- // index //---------------------------------------------------------- - (unsigned int) index{ return index;}- (void) setIndex: (unsigned int) anIndex{ index = anIndex;}// provide a textual representation for debugging- (NSString *) description{ NSString *channelString = [[NSString alloc] initWithFormat:@"channel=%d", channel]; NSMutableString *txtString; if ([self text] != nil) { txtString = [NSMutableString stringWithString:[self text]]; [txtString replaceOccurrencesOfString:@"\n" withString:@"\\\n" options:NSAnchoredSearch range:NSMakeRange(0, [txtString length])]; [txtString replaceOccurrencesOfString:@"\r" withString:@"\\\r" options:NSAnchoredSearch range:NSMakeRange(0, [txtString length])]; [txtString replaceOccurrencesOfString:@"\t" withString:@"\\\t" options:NSAnchoredSearch range:NSMakeRange(0, [txtString length])]; } else { txtString = [NSMutableString stringWithString:@"<no text>"]; } return [@"[@" stringByAppendingFormat:@"%d, %d, %d=%@,<%d>,%@,%d:%d]", index, start, stop, txtString, type, channelString, line, charPositionInLine];}@end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -