1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver/** \file
2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *  Contains the definition of a basic ANTLR3 exception structure created
3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *  by a recognizer when errors are found/predicted.
4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver */
5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#ifndef	_ANTLR3_EXCEPTION_H
6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	_ANTLR3_EXCEPTION_H
7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// [The "BSD licence"]
9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// http://www.temporal-wave.com
11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// http://www.linkedin.com/in/jimidle
12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver//
13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// All rights reserved.
14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver//
15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// Redistribution and use in source and binary forms, with or without
16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// modification, are permitted provided that the following conditions
17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// are met:
18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// 1. Redistributions of source code must retain the above copyright
19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver//    notice, this list of conditions and the following disclaimer.
20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// 2. Redistributions in binary form must reproduce the above copyright
21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver//    notice, this list of conditions and the following disclaimer in the
22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver//    documentation and/or other materials provided with the distribution.
23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// 3. The name of the author may not be used to endorse or promote products
24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver//    derived from this software without specific prior written permission.
25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver//
26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include    <antlr3defs.h>
38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver/** Indicates that the recognizer received a token
40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *  in the input that was not predicted.
41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver */
42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	ANTLR3_RECOGNITION_EXCEPTION	    1
43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver/** Name of exception #ANTLR3_RECOGNITION_EXCEPTION
45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver */
46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	ANTLR3_RECOGNITION_EX_NAME  "org.antlr.runtime.RecognitionException"
47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver/** Indicates that the recognizer was expecting one token and found a
49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *  a different one.
50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver */
51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	ANTLR3_MISMATCHED_TOKEN_EXCEPTION   2
52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver/** Name of #ANTLR3_MISMATCHED_TOKEN_EXCEPTION
54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver */
55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	ANTLR3_MISMATCHED_EX_NAME   "org.antlr.runtime.MismatchedTokenException"
56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver/** Recognizer could not find a valid alternative from the input
58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver */
59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	ANTLR3_NO_VIABLE_ALT_EXCEPTION	    3
60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver/** Name of #ANTLR3_NO_VIABLE_ALT_EXCEPTION
62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver */
63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	ANTLR3_NO_VIABLE_ALT_NAME   "org.antlr.runtime.NoViableAltException"
64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver/* Character in a set was not found
66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver */
67324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	ANTLR3_MISMATCHED_SET_EXCEPTION	    4
68324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
69324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver/* Name of #ANTLR3_MISMATCHED_SET_EXCEPTION
70324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver */
71324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	ANTLR3_MISMATCHED_SET_NAME  "org.antlr.runtime.MismatchedSetException"
72324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
73324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver/* A rule predicting at least n elements found less than that,
74324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * such as: WS: " "+;
75324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver */
76324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	ANTLR3_EARLY_EXIT_EXCEPTION	    5
77324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
78324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver/* Name of #ANTLR3_EARLY_EXIT_EXCEPTION
79324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver */
80324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	ANTLR3_EARLY_EXIT_NAME	     "org.antlr.runtime.EarlyExitException"
81324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
82324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	ANTLR3_FAILED_PREDICATE_EXCEPTION   6
83324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	ANTLR3_FAILED_PREDICATE_NAME	    "org.antlr.runtime.FailedPredicateException"
84324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
85324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	ANTLR3_MISMATCHED_TREE_NODE_EXCEPTION	7
86324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	ANTLR3_MISMATCHED_TREE_NODE_NAME    "org.antlr.runtime.MismatchedTreeNodeException"
87324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
88324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	ANTLR3_REWRITE_EARLY_EXCEPTION	8
89324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	ANTLR3_REWRITE_EARLY_EXCEPTION_NAME    "org.antlr.runtime.tree.RewriteEarlyExitException"
90324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
91324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	ANTLR3_UNWANTED_TOKEN_EXCEPTION	9
92324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	ANTLR3_UNWANTED_TOKEN_EXCEPTION_NAME    "org.antlr.runtime.UnwantedTokenException"
93324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
94324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	ANTLR3_MISSING_TOKEN_EXCEPTION	10
95324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define	ANTLR3_MISSING_TOKEN_EXCEPTION_NAME    "org.antlr.runtime.MissingTokenException"
96324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
97324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#ifdef __cplusplus
98324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverextern "C" {
99324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#endif
100324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
101324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver/** Base structure for an ANTLR3 exception tracker
102324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver */
103324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvertypedef	struct ANTLR3_EXCEPTION_struct
104324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver{
105324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver	/// Set to one of the exception type defines:
106324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver	///
107324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver	///  - #ANTLR3_RECOGNITION_EXCEPTION
108324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver	///  - #ANTLR3_MISMATCHED_TOKEN_EXCEPTION
109324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver	///  - #ANTLR3_NO_VIABLE_ALT_EXCEPTION
110324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver	///  - #ANTLR3_MISMATCHED_SET_EXCEPTION
111324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver	///  - #ANTLR3_EARLY_EXIT_EXCEPTION
112324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver	///  - #ANTLR3_FAILED_PREDICATE_EXCEPTION
113324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver	///  - #ANTLR3_EARLY_EXIT_EXCEPTION
114324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ///
115324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ANTLR3_UINT32   type;
116324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
117324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    /** The string name of the exception
118324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     */
119324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    void    *	    name;
120324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
121324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    /** The printable message that goes with this exception, in your preferred
122324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     *  encoding format. ANTLR just uses ASCII by default but you can ignore these
123324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     *  messages or convert them to another format or whatever of course. They are
124324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     *  really internal messages that you then decide how to print out in a form that
125324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     *  the users of your product will understand, as they are unlikely to know what
126324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     *  to do with "Recognition exception at: [[TOK_GERUND..... " ;-)
127324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     */
128324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    void    *	    message;
129324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
130324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    /** Name of the file/input source for reporting. Note that this may be NULL!!
131324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     */
132324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    pANTLR3_STRING streamName;
133324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
134324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    /** If set to ANTLR3_TRUE, this indicates that the message element of this structure
135324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     *  should be freed by calling ANTLR3_FREE() when the exception is destroyed.
136324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     */
137324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ANTLR3_BOOLEAN  freeMessage;
138324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
139324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    /** Indicates the index of the 'token' we were looking at when the
140324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     *  exception occurred.
141324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     */
142324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ANTLR3_MARKER  index;
143324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
144324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    /** Indicates what the current token/tree was when the error occurred. Since not
145324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     *  all input streams will be able to retrieve the nth token, we track it here
146324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     *  instead. This is for parsers, and even tree parsers may set this.
147324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     */
148324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    void	* token;
149324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
150324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    /** Indicates the token we were expecting to see next when the error occurred
151324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     */
152324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ANTLR3_UINT32   expecting;
153324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
154324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    /** Indicates a set of tokens that we were expecting to see one of when the
155324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     *  error occurred. It is a following bitset list, so you can use load it and use ->toIntList() on it
156324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     *  to generate an array of integer tokens that it represents.
157324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     */
158324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    pANTLR3_BITSET_LIST  expectingSet;
159324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
160324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    /** If this is a tree parser exception then the node is set to point to the node
161324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     * that caused the issue.
162324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     */
163324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    void	* node;
164324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
165324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    /** The current character when an error occurred - for lexers.
166324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     */
167324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ANTLR3_UCHAR   c;
168324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
169324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    /** Track the line at which the error occurred in case this is
170324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     *  generated from a lexer.  We need to track this since the
171324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     *  unexpected char doesn't carry the line info.
172324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     */
173324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ANTLR3_UINT32   line;
174324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
175324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    /** Character position in the line where the error occurred.
176324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     */
177324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ANTLR3_INT32   charPositionInLine;
178324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
179324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    /** decision number for NVE
180324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     */
181324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ANTLR3_UINT32   decisionNum;
182324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
183324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    /** State for NVE
184324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     */
185324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ANTLR3_UINT32   state;
186324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
187324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    /** Rule name for failed predicate exception
188324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     */
189324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    void	    * ruleName;
190324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
191324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    /** Pointer to the next exception in the chain (if any)
192324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     */
193324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    struct ANTLR3_EXCEPTION_struct * nextException;
194324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
195324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    /** Pointer to the input stream that this exception occurred in.
196324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     */
197324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    pANTLR3_INT_STREAM    input;
198324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
199324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    /** Pointer for you, the programmer to add anything you like to an exception.
200324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     */
201324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    void    *	    custom;
202324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
203324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    /** Pointer to a routine that is called to free the custom exception structure
204324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     *  when the exception is destroyed. Set to NULL if nothing should be done.
205324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     */
206324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    void	    (*freeCustom)   (void * custom);
207324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    void	    (*print)	    (struct ANTLR3_EXCEPTION_struct * ex);
208324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    void	    (*freeEx)	    (struct ANTLR3_EXCEPTION_struct * ex);
209324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
210324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
211324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ANTLR3_EXCEPTION;
212324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
213324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#ifdef __cplusplus
214324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
215324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#endif
216324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
217324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
218324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#endif
219