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 #import "ANTLRMismatchedTokenException.h" 28 29 30 @implementation ANTLRMismatchedTokenException 31 32 @synthesize expecting; 33 @synthesize expectingChar; 34 @synthesize isTokenType; 35 36 37 + (id) newException:(NSInteger)expectedTokenType Stream:(id<ANTLRIntStream>)anInput 38 { 39 return [[ANTLRMismatchedTokenException alloc] initWithTokenType:expectedTokenType Stream:anInput]; 40 } 41 42 + (id) newExceptionMissing:(NSInteger)expectedTokenType 43 Stream:(id<ANTLRIntStream>)anInput 44 Token:(id<ANTLRToken>)inserted 45 { 46 return [[ANTLRMismatchedTokenException alloc] initWithTokenType:expectedTokenType Stream:anInput Token:inserted]; 47 } 48 49 + (id) newExceptionChar:(unichar) expectedCharacter Stream:(id<ANTLRIntStream>)anInput 50 { 51 return [[ANTLRMismatchedTokenException alloc] initWithCharacter:expectedCharacter Stream:anInput]; 52 } 53 54 + (id) newExceptionStream:(id<ANTLRIntStream>)anInput Exception:(NSException *)e Follow:(ANTLRBitSet *) follow 55 { 56 return [[ANTLRMismatchedTokenException alloc] initWithStream:anInput]; 57 } 58 59 -(id) initWithTokenType:(NSInteger)expectedTokenType Stream:(id<ANTLRIntStream>)anInput 60 { 61 if ((self = [super initWithStream:anInput]) != nil) { 62 expecting = expectedTokenType; 63 isTokenType = YES; 64 } 65 return self; 66 } 67 68 -(id) initWithTokenType:(NSInteger)expectedTokenType 69 Stream:(id<ANTLRIntStream>)anInput 70 Token:(id<ANTLRToken>)inserted 71 { 72 if ((self = [super initWithStream:anInput]) != nil) { 73 expecting = expectedTokenType; 74 isTokenType = YES; 75 } 76 return self; 77 } 78 79 - (id) initWithCharacter:(unichar) expectedCharacter Stream:(id<ANTLRIntStream>)anInput 80 { 81 if ((self = [super initWithStream:anInput]) != nil) { 82 expectingChar = expectedCharacter; 83 isTokenType = NO; 84 } 85 return self; 86 } 87 88 - (NSString *) description 89 { 90 NSMutableString *desc = (NSMutableString *)[super description]; 91 if (isTokenType) { 92 [desc appendFormat:@" expected:%d got:%d", expecting, [self unexpectedType]]; 93 } else { 94 [desc appendFormat:@" expected:%c got:%c", expectingChar, (unichar)[self unexpectedType]]; 95 } 96 return desc; 97 } 98 99 @end 100