1 // 2 // ANTLRRuntimeException.m 3 // ANTLR 4 // 5 // Created by Alan Condit on 6/5/10. 6 // [The "BSD licence"] 7 // Copyright (c) 2010 Alan Condit 8 // All rights reserved. 9 // 10 // Redistribution and use in source and binary forms, with or without 11 // modification, are permitted provided that the following conditions 12 // are met: 13 // 1. Redistributions of source code must retain the above copyright 14 // notice, this list of conditions and the following disclaimer. 15 // 2. Redistributions in binary form must reproduce the above copyright 16 // notice, this list of conditions and the following disclaimer in the 17 // documentation and/or other materials provided with the distribution. 18 // 3. The name of the author may not be used to endorse or promote products 19 // derived from this software without specific prior written permission. 20 // 21 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 22 // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 23 // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 24 // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 25 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 26 // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 30 // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 32 #import "ANTLRRuntimeException.h" 33 34 35 @implementation ANTLRRuntimeException 36 37 + (id) newException 38 { 39 return [[ANTLRRuntimeException alloc] init]; 40 } 41 42 + (id) newException:(NSString *)aReason 43 { 44 return [[ANTLRRuntimeException alloc] init:aReason]; 45 } 46 47 + (id) newException:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 48 { 49 return [[ANTLRRuntimeException alloc] init:aReason userInfo:aUserInfo]; 50 } 51 52 + (id) newException:(NSString *)aName reason:(NSString *)aReason; 53 { 54 return [[ANTLRRuntimeException alloc] initWithName:aName reason:aReason]; 55 } 56 57 + (id) newException:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo; 58 { 59 return [[ANTLRRuntimeException alloc] initWithName:aName reason:aReason userInfo:aUserInfo]; 60 } 61 62 63 - (id) init 64 { 65 self = [super initWithName:@"ANTLRRuntimeException" reason:@"UnknownException" userInfo:nil]; 66 return(self); 67 } 68 69 - (id) init:(NSString *)aReason 70 { 71 self = [super initWithName:(NSString *)@"ANTLRRuntimeException" reason:(NSString *)aReason userInfo:(NSDictionary *)nil]; 72 return(self); 73 } 74 75 - (id) init:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 76 { 77 self = [super initWithName:@"ANTLRRuntimeException" reason:aReason userInfo:aUserInfo]; 78 return(self); 79 } 80 81 - (id) initWithName:(NSString *)aName reason:(NSString *)aReason 82 { 83 self = [super initWithName:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)nil]; 84 return(self); 85 } 86 87 - (id) initWithName:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 88 { 89 self = [super initWithName:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo]; 90 return(self); 91 } 92 93 - (NSString *) Description 94 { 95 return [super reason]; 96 } 97 98 - (id) stackTrace:(NSException *)e 99 { 100 NSArray *addrs = [e callStackReturnAddresses]; 101 NSArray *trace = [e callStackSymbols]; 102 103 for (NSString *traceStr in trace) { 104 NSLog( @"%@", traceStr); 105 // TODO: remove special after testing 106 if ([traceStr hasPrefix:@"main("] > 0) 107 return traceStr; 108 if (![traceStr hasPrefix:@"org.stringtemplate"]) 109 return traceStr; 110 } 111 return trace; 112 } 113 114 @end 115 116 @implementation ANTLRIllegalArgumentException 117 118 + (id) newException 119 { 120 return [[ANTLRIllegalArgumentException alloc] init]; 121 } 122 123 + (id) newException:(NSString *)aReason 124 { 125 return [[ANTLRIllegalArgumentException alloc] init:aReason]; 126 } 127 128 + (id) newException:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 129 { 130 return [[ANTLRIllegalArgumentException alloc] init:aReason userInfo:aUserInfo]; 131 } 132 133 - (id) init 134 { 135 self = [super initWithName:@"ANTLRIllegalArgumentException" reason:@"UnknownException" userInfo:nil]; 136 return(self); 137 } 138 139 - (id) init:(NSString *)aReason 140 { 141 self = [super initWithName:@"ANTLRIllegalArgumentException" reason:(NSString *)aReason userInfo:nil]; 142 return(self); 143 } 144 145 - (id) init:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 146 { 147 self = [super initWithName:@"ANTLRIllegalArgumentException" reason:aReason userInfo:aUserInfo]; 148 return(self); 149 } 150 151 @end 152 153 @implementation ANTLRIllegalStateException 154 155 + (id) newException 156 { 157 return [[ANTLRIllegalStateException alloc] init]; 158 } 159 160 + (id) newException:(NSString *)aReason 161 { 162 return [[ANTLRIllegalStateException alloc] init:aReason]; 163 } 164 165 + (id) newException:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 166 { 167 return [[ANTLRIllegalStateException alloc] init:aReason userInfo:aUserInfo]; 168 } 169 170 - (id) init 171 { 172 self = [super initWithName:@"ANTLRIllegalStateException" reason:@"UnknownException" userInfo:nil]; 173 return(self); 174 } 175 176 - (id) init:(NSString *)aReason 177 { 178 self = [super initWithName:@"ANTLRIllegalStateException" reason:(NSString *)aReason userInfo:nil]; 179 return(self); 180 } 181 182 - (id) init:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 183 { 184 self = [super initWithName:@"ANTLRIllegalStateException" reason:aReason userInfo:aUserInfo]; 185 return(self); 186 } 187 188 @end 189 190 @implementation ANTLRNoSuchElementException 191 192 + (id) newException 193 { 194 return [[ANTLRNoSuchElementException alloc] init]; 195 } 196 197 + (id) newException:(NSString *)aReason 198 { 199 return [[ANTLRNoSuchElementException alloc] init:aReason]; 200 } 201 202 + (id) newException:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 203 { 204 return [[ANTLRNoSuchElementException alloc] init:aReason userInfo:(NSDictionary *)aUserInfo]; 205 } 206 207 - (id) init 208 { 209 self = [super initWithName:@"ANTLRNoSuchElementException" reason:@"UnknownException" userInfo:nil]; 210 return(self); 211 } 212 213 - (id) init:(NSString *)aReason 214 { 215 self = [super initWithName:@"ANTLRNoSuchElementException" reason:(NSString *)aReason userInfo:(NSDictionary *)nil]; 216 return(self); 217 } 218 219 - (id) init:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 220 { 221 self = [super initWithName:@"ANTLRNoSuchElementException" reason:aReason userInfo:aUserInfo]; 222 return(self); 223 } 224 225 - (id) initWithName:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 226 { 227 self = [super initWithName:aName reason:aReason userInfo:aUserInfo]; 228 return(self); 229 } 230 231 @end 232 233 @implementation ANTLRRewriteEarlyExitException 234 235 + (id) newException 236 { 237 return [[self alloc] init]; 238 } 239 240 - (id) init 241 { 242 self = [super initWithName:@"RewriteEarlyExitException" reason:nil userInfo:nil]; 243 return self; 244 } 245 246 - (id) initWithName:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 247 { 248 self = [super initWithName:aName reason:aReason userInfo:aUserInfo]; 249 return(self); 250 } 251 252 - (NSString *) description 253 { 254 return [self name]; 255 } 256 257 @end 258 259 @implementation ANTLRUnsupportedOperationException 260 261 + (id) newException:(NSString *)aReason 262 { 263 return [[ANTLRRuntimeException alloc] initWithName:@"Unsupported Operation Exception" reason:aReason userInfo:nil]; 264 } 265 266 - (id) initWithName:(NSString *)aName reason:(NSString *)aReason 267 { 268 self=[super initWithName:aName reason:aReason userInfo:nil]; 269 return self; 270 } 271 272 - (id) initWithName:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)userInfo 273 { 274 self=[super initWithName:aName reason:aReason userInfo:userInfo]; 275 return self; 276 } 277 278 @end 279 280