Home | History | Annotate | Download | only in Framework
      1 // [The "BSD licence"]
      2 // Copyright (c) 2006-2007 Kay Roepke
      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 "ANTLRDebugParser.h"
     28 
     29 
     30 @implementation ANTLRDebugParser
     31 
     32 - (id) initWithTokenStream:(id<ANTLRTokenStream>)theStream
     33 {
     34 	return [self initWithTokenStream:theStream debugListener:nil debuggerPort:-1];
     35 }
     36 
     37 - (id) initWithTokenStream:(id<ANTLRTokenStream>)theStream
     38 			  debuggerPort:(NSInteger)portNumber
     39 {
     40 	return [self initWithTokenStream:theStream debugListener:nil debuggerPort:portNumber];
     41 }
     42 
     43 - (id) initWithTokenStream:(id<ANTLRTokenStream>)theStream
     44 			 debugListener:(id<ANTLRDebugEventListener>)theDebugListener
     45 			  debuggerPort:(NSInteger)portNumber
     46 {
     47 	id<ANTLRDebugEventListener,NSObject> debugger = nil;
     48 	id<ANTLRTokenStream> tokenStream = nil;
     49 	if (theDebugListener) {
     50 		debugger = [(id<ANTLRDebugEventListener,NSObject>)theDebugListener retain];
     51 		debugger = theDebugListener;
     52 	} else {
     53 		debugger = [[ANTLRDebugEventProxy alloc] initWithGrammarName:[self grammarFileName] debuggerPort:portNumber];
     54 	}
     55 	if (theStream && ![theStream isKindOfClass:[ANTLRDebugTokenStream class]]) {
     56 		tokenStream = [[ANTLRDebugTokenStream alloc] initWithTokenStream:theStream debugListener:debugger];
     57 	} else {
     58 		tokenStream = [theStream retain];
     59 		tokenStream = theStream;
     60 	}
     61 	self = [super initWithTokenStream:tokenStream];
     62 	if (self) {
     63 		[self setDebugListener:debugger];
     64 		[debugger release];
     65 		[tokenStream release];
     66 		[debugListener waitForDebuggerConnection];
     67 	}
     68 	return self;
     69 }
     70 
     71 - (void) dealloc
     72 {
     73     [self setDebugListener: nil];
     74     [super dealloc];
     75 }
     76 
     77 - (id<ANTLRDebugEventListener>) debugListener
     78 {
     79     return debugListener; 
     80 }
     81 
     82 - (void) setDebugListener: (id<ANTLRDebugEventListener>) aDebugListener
     83 {
     84     if (debugListener != aDebugListener) {
     85         [(id<ANTLRDebugEventListener,NSObject>)aDebugListener retain];
     86         [(id<ANTLRDebugEventListener,NSObject>)debugListener release];
     87         debugListener = aDebugListener;
     88     }
     89 }
     90 
     91 #pragma mark -
     92 #pragma mark Overrides
     93 
     94 - (void) beginResync
     95 {
     96 	[debugListener beginResync];
     97 }
     98 
     99 - (void) endResync
    100 {
    101 	[debugListener endResync];
    102 }
    103 - (void)beginBacktracking:(NSInteger)level
    104 {
    105 	[debugListener beginBacktrack:level];
    106 }
    107 
    108 - (void)endBacktracking:(NSInteger)level wasSuccessful:(BOOL)successful
    109 {
    110 	[debugListener endBacktrack:level wasSuccessful:successful];
    111 }
    112 
    113 @end
    114