1*16467b97STreehugger Robot /** \file 2*16467b97STreehugger Robot * Declarations for all the antlr3 C runtime interfaces/classes. This 3*16467b97STreehugger Robot * allows the structures that define the interfaces to contain pointers to 4*16467b97STreehugger Robot * each other without trying to sort out the cyclic interdependencies that 5*16467b97STreehugger Robot * would otherwise result. 6*16467b97STreehugger Robot */ 7*16467b97STreehugger Robot #ifndef _ANTLR3_INTERFACES_HPP 8*16467b97STreehugger Robot #define _ANTLR3_INTERFACES_HPP 9*16467b97STreehugger Robot 10*16467b97STreehugger Robot // [The "BSD licence"] 11*16467b97STreehugger Robot // Copyright (c) 2005-2009 Gokulakannan Somasundaram, ElectronDB 12*16467b97STreehugger Robot // 13*16467b97STreehugger Robot // All rights reserved. 14*16467b97STreehugger Robot // 15*16467b97STreehugger Robot // Redistribution and use in source and binary forms, with or without 16*16467b97STreehugger Robot // modification, are permitted provided that the following conditions 17*16467b97STreehugger Robot // are met: 18*16467b97STreehugger Robot // 1. Redistributions of source code must retain the above copyright 19*16467b97STreehugger Robot // notice, this list of conditions and the following disclaimer. 20*16467b97STreehugger Robot // 2. Redistributions in binary form must reproduce the above copyright 21*16467b97STreehugger Robot // notice, this list of conditions and the following disclaimer in the 22*16467b97STreehugger Robot // documentation and/or other materials provided with the distribution. 23*16467b97STreehugger Robot // 3. The name of the author may not be used to endorse or promote products 24*16467b97STreehugger Robot // derived from this software without specific prior written permission. 25*16467b97STreehugger Robot // 26*16467b97STreehugger Robot // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 27*16467b97STreehugger Robot // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 28*16467b97STreehugger Robot // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 29*16467b97STreehugger Robot // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 30*16467b97STreehugger Robot // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 31*16467b97STreehugger Robot // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 32*16467b97STreehugger Robot // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 33*16467b97STreehugger Robot // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 34*16467b97STreehugger Robot // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 35*16467b97STreehugger Robot // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36*16467b97STreehugger Robot 37*16467b97STreehugger Robot ANTLR_BEGIN_NAMESPACE() 38*16467b97STreehugger Robot 39*16467b97STreehugger Robot template<class ImplTraits, class SuperType> 40*16467b97STreehugger Robot class IntStream; 41*16467b97STreehugger Robot 42*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_RECOGNIZER_SHARED_STATE 43*16467b97STreehugger Robot /// \ingroup ANTLR3_RECOGNIZER_SHARED_STATE 44*16467b97STreehugger Robot /// 45*16467b97STreehugger Robot template<class ImplTraits, class SuperType> 46*16467b97STreehugger Robot class RecognizerSharedState; 47*16467b97STreehugger Robot 48*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_BITSET_LIST 49*16467b97STreehugger Robot /// \ingroup ANTLR3_BITSET_LIST 50*16467b97STreehugger Robot /// 51*16467b97STreehugger Robot template<class AllocatorType> 52*16467b97STreehugger Robot class BitsetList; 53*16467b97STreehugger Robot 54*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_BITSET 55*16467b97STreehugger Robot /// \ingroup ANTLR3_BITSET 56*16467b97STreehugger Robot /// 57*16467b97STreehugger Robot template<class AllocatorType> 58*16467b97STreehugger Robot class Bitset; 59*16467b97STreehugger Robot 60*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_COMMON_TOKEN 61*16467b97STreehugger Robot /// \ingroup ANTLR3_COMMON_TOKEN 62*16467b97STreehugger Robot /// 63*16467b97STreehugger Robot template<class ImplTraits> 64*16467b97STreehugger Robot class CommonToken; 65*16467b97STreehugger Robot 66*16467b97STreehugger Robot template<class ImplTraits> 67*16467b97STreehugger Robot class CommonTokenFunctions; 68*16467b97STreehugger Robot 69*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_EXCEPTION 70*16467b97STreehugger Robot /// \ingroup ANTLR3_EXCEPTION 71*16467b97STreehugger Robot /// 72*16467b97STreehugger Robot enum ExceptionType 73*16467b97STreehugger Robot { 74*16467b97STreehugger Robot /** Indicates that the recognizer received a token 75*16467b97STreehugger Robot * in the input that was not predicted. 76*16467b97STreehugger Robot */ 77*16467b97STreehugger Robot RECOGNITION_EXCEPTION = 0 78*16467b97STreehugger Robot /** Indicates that the recognizer was expecting one token and found a 79*16467b97STreehugger Robot * a different one. 80*16467b97STreehugger Robot */ 81*16467b97STreehugger Robot , MISMATCHED_TOKEN_EXCEPTION 82*16467b97STreehugger Robot 83*16467b97STreehugger Robot /** Recognizer could not find a valid alternative from the input 84*16467b97STreehugger Robot */ 85*16467b97STreehugger Robot , NO_VIABLE_ALT_EXCEPTION 86*16467b97STreehugger Robot 87*16467b97STreehugger Robot /* Character in a set was not found 88*16467b97STreehugger Robot */ 89*16467b97STreehugger Robot , MISMATCHED_SET_EXCEPTION 90*16467b97STreehugger Robot 91*16467b97STreehugger Robot /* A rule predicting at least n elements found less than that, 92*16467b97STreehugger Robot * such as: WS: " "+; 93*16467b97STreehugger Robot */ 94*16467b97STreehugger Robot , EARLY_EXIT_EXCEPTION 95*16467b97STreehugger Robot 96*16467b97STreehugger Robot , FAILED_PREDICATE_EXCEPTION 97*16467b97STreehugger Robot 98*16467b97STreehugger Robot , MISMATCHED_TREE_NODE_EXCEPTION 99*16467b97STreehugger Robot 100*16467b97STreehugger Robot , REWRITE_EARLY_EXCEPTION 101*16467b97STreehugger Robot 102*16467b97STreehugger Robot , UNWANTED_TOKEN_EXCEPTION 103*16467b97STreehugger Robot 104*16467b97STreehugger Robot , MISSING_TOKEN_EXCEPTION 105*16467b97STreehugger Robot }; 106*16467b97STreehugger Robot 107*16467b97STreehugger Robot template<class ImplTraits, ExceptionType Ex, class StreamType> 108*16467b97STreehugger Robot class ANTLR_Exception; 109*16467b97STreehugger Robot 110*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_TOPO 111*16467b97STreehugger Robot /// \ingroup ANTLR3_TOPO 112*16467b97STreehugger Robot /// 113*16467b97STreehugger Robot template<class AllocPolicyType> 114*16467b97STreehugger Robot class Topo; 115*16467b97STreehugger Robot 116*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_INPUT_STREAM 117*16467b97STreehugger Robot /// \ingroup ANTLR3_INPUT_STREAM 118*16467b97STreehugger Robot /// 119*16467b97STreehugger Robot template<class ImplTraits> 120*16467b97STreehugger Robot class InputStream; 121*16467b97STreehugger Robot 122*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_LEX_STATE 123*16467b97STreehugger Robot /// \ingroup ANTLR3_LEX_STATE 124*16467b97STreehugger Robot /// 125*16467b97STreehugger Robot template<class ImplTraits> 126*16467b97STreehugger Robot class LexState; 127*16467b97STreehugger Robot 128*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_TOKEN_SOURCE 129*16467b97STreehugger Robot /// \ingroup ANTLR3_TOKEN_SOURCE 130*16467b97STreehugger Robot /// 131*16467b97STreehugger Robot template<class ImplTraits> 132*16467b97STreehugger Robot class TokenSource; 133*16467b97STreehugger Robot template<class ImplTraits, class SuperType> 134*16467b97STreehugger Robot class TokenSourceFunctions; 135*16467b97STreehugger Robot 136*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_TOKEN_STREAM 137*16467b97STreehugger Robot /// \ingroup ANTLR3_TOKEN_STREAM 138*16467b97STreehugger Robot /// 139*16467b97STreehugger Robot template<class ImplTraits> 140*16467b97STreehugger Robot class TokenStream; 141*16467b97STreehugger Robot template<class ImplTraits> 142*16467b97STreehugger Robot class TokenStreamFunctions; 143*16467b97STreehugger Robot 144*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_COMMON_TOKEN_STREAM 145*16467b97STreehugger Robot /// \ingroup ANTLR3_COMMON_TOKEN_STREAM 146*16467b97STreehugger Robot /// 147*16467b97STreehugger Robot template<class ImplTraits> 148*16467b97STreehugger Robot class CommonTokenStream; 149*16467b97STreehugger Robot template<class ImplTraits> 150*16467b97STreehugger Robot class CommonTokenStreamFunctions; 151*16467b97STreehugger Robot 152*16467b97STreehugger Robot 153*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_CYCLIC_DFA 154*16467b97STreehugger Robot /// \ingroup ANTLR3_CYCLIC_DFA 155*16467b97STreehugger Robot /// 156*16467b97STreehugger Robot template<class ImplTraits, class ComponentType> 157*16467b97STreehugger Robot class CyclicDFA; 158*16467b97STreehugger Robot 159*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_LEXER 160*16467b97STreehugger Robot /// \ingroup ANTLR3_LEXER 161*16467b97STreehugger Robot /// 162*16467b97STreehugger Robot template<class ImplTraits> 163*16467b97STreehugger Robot class Lexer; 164*16467b97STreehugger Robot 165*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_PARSER 166*16467b97STreehugger Robot /// \ingroup ANTLR3_PARSER 167*16467b97STreehugger Robot /// 168*16467b97STreehugger Robot template<class ImplTraits> 169*16467b97STreehugger Robot class Parser; 170*16467b97STreehugger Robot 171*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_BASE_TREE 172*16467b97STreehugger Robot /// \ingroup ANTLR3_BASE_TREE 173*16467b97STreehugger Robot /// 174*16467b97STreehugger Robot template<class ImplTraits> 175*16467b97STreehugger Robot class BaseTree; 176*16467b97STreehugger Robot template<class ImplTraits> 177*16467b97STreehugger Robot class BaseTreeFunctions; 178*16467b97STreehugger Robot 179*16467b97STreehugger Robot 180*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_COMMON_TREE 181*16467b97STreehugger Robot /// \ingroup ANTLR3_COMMON_TREE 182*16467b97STreehugger Robot /// 183*16467b97STreehugger Robot template<class ImplTraits> 184*16467b97STreehugger Robot class CommonTree; 185*16467b97STreehugger Robot template<class ImplTraits> 186*16467b97STreehugger Robot class CommonTreeFunctions; 187*16467b97STreehugger Robot 188*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_PARSE_TREE 189*16467b97STreehugger Robot /// \ingroup ANTLR3_PARSE_TREE 190*16467b97STreehugger Robot /// 191*16467b97STreehugger Robot template<class ImplTraits> 192*16467b97STreehugger Robot class ParseTree; 193*16467b97STreehugger Robot 194*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_TREE_NODE_STREAM 195*16467b97STreehugger Robot /// \ingroup ANTLR3_TREE_NODE_STREAM 196*16467b97STreehugger Robot /// 197*16467b97STreehugger Robot template<class ImplTraits> 198*16467b97STreehugger Robot class TreeNodeStream; 199*16467b97STreehugger Robot 200*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_COMMON_TREE_NODE_STREAM 201*16467b97STreehugger Robot /// \ingroup ANTLR3_COMMON_TREE_NODE_STREAM 202*16467b97STreehugger Robot /// 203*16467b97STreehugger Robot template<class ImplTraits> 204*16467b97STreehugger Robot class CommonTreeNodeStream; 205*16467b97STreehugger Robot 206*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_TREE_WALK_STATE 207*16467b97STreehugger Robot /// \ingroup ANTLR3_TREE_WALK_STATE 208*16467b97STreehugger Robot /// 209*16467b97STreehugger Robot template<class ImplTraits> 210*16467b97STreehugger Robot class TreeWalkState; 211*16467b97STreehugger Robot 212*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_BASE_TREE_ADAPTOR 213*16467b97STreehugger Robot /// \ingroup ANTLR3_BASE_TREE_ADAPTOR 214*16467b97STreehugger Robot /// 215*16467b97STreehugger Robot template<class ImplTraits> 216*16467b97STreehugger Robot class BaseTreeAdaptor; 217*16467b97STreehugger Robot template<class ImplTraits> 218*16467b97STreehugger Robot class BaseTreeAdaptorFunctions; 219*16467b97STreehugger Robot 220*16467b97STreehugger Robot 221*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_COMMON_TREE_ADAPTOR 222*16467b97STreehugger Robot /// \ingroup ANTLR3_COMMON_TREE_ADAPTOR 223*16467b97STreehugger Robot /// 224*16467b97STreehugger Robot template<class ImplTraits> 225*16467b97STreehugger Robot class CommonTreeAdaptor; 226*16467b97STreehugger Robot template<class ImplTraits> 227*16467b97STreehugger Robot class CommonTreeAdaptorFunctions; 228*16467b97STreehugger Robot 229*16467b97STreehugger Robot 230*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_TREE_PARSER 231*16467b97STreehugger Robot /// \ingroup ANTLR3_TREE_PARSER 232*16467b97STreehugger Robot /// 233*16467b97STreehugger Robot template<class ImplTraits> 234*16467b97STreehugger Robot class TreeParser; 235*16467b97STreehugger Robot 236*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_INT_TRIE 237*16467b97STreehugger Robot /// \ingroup ANTLR3_INT_TRIE 238*16467b97STreehugger Robot /// 239*16467b97STreehugger Robot template< class DataType, class AllocPolicyType > 240*16467b97STreehugger Robot class IntTrie; 241*16467b97STreehugger Robot 242*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_REWRITE_RULE_ELEMENT_STREAM 243*16467b97STreehugger Robot /// \ingroup ANTLR3_REWRITE_RULE_ELEMENT_STREAM 244*16467b97STreehugger Robot /// 245*16467b97STreehugger Robot template<class ImplTraits, class SuperType> 246*16467b97STreehugger Robot class RewriteRuleElementStream; 247*16467b97STreehugger Robot 248*16467b97STreehugger Robot template<class ImplTraits> 249*16467b97STreehugger Robot class RewriteRuleTokenStream; 250*16467b97STreehugger Robot 251*16467b97STreehugger Robot template<class ImplTraits> 252*16467b97STreehugger Robot class RewriteRuleSubtreeStream; 253*16467b97STreehugger Robot 254*16467b97STreehugger Robot template<class ImplTraits> 255*16467b97STreehugger Robot class RewriteRuleNodeStream; 256*16467b97STreehugger Robot 257*16467b97STreehugger Robot /// Pointer to an instantiation of 'class' #ANTLR3_DEBUG_EVENT_LISTENER 258*16467b97STreehugger Robot /// \ingroup ANTLR3_DEBUG_EVENT_LISTENER 259*16467b97STreehugger Robot /// 260*16467b97STreehugger Robot template<class ImplTraits> 261*16467b97STreehugger Robot class DebugEventListener; 262*16467b97STreehugger Robot 263*16467b97STreehugger Robot //A Class just used for forwarding other classes for simplifying class forwarding 264*16467b97STreehugger Robot //Logic: constructor is made simple 265*16467b97STreehugger Robot template<class A> 266*16467b97STreehugger Robot class ClassForwarder {}; 267*16467b97STreehugger Robot 268*16467b97STreehugger Robot template<bool b> 269*16467b97STreehugger Robot class BoolForwarder {}; 270*16467b97STreehugger Robot class Empty {}; 271*16467b97STreehugger Robot 272*16467b97STreehugger Robot template<class ImplTraits, class StreamType> 273*16467b97STreehugger Robot class ComponentTypeFinder 274*16467b97STreehugger Robot { 275*16467b97STreehugger Robot }; 276*16467b97STreehugger Robot 277*16467b97STreehugger Robot template<class ImplTraits> 278*16467b97STreehugger Robot class ComponentTypeFinder< ImplTraits, typename ImplTraits::InputStreamType> 279*16467b97STreehugger Robot { 280*16467b97STreehugger Robot public: 281*16467b97STreehugger Robot typedef typename ImplTraits::LexerType ComponentType; 282*16467b97STreehugger Robot }; 283*16467b97STreehugger Robot 284*16467b97STreehugger Robot template<class ImplTraits> 285*16467b97STreehugger Robot class ComponentTypeFinder< ImplTraits, typename ImplTraits::TokenStreamType> 286*16467b97STreehugger Robot { 287*16467b97STreehugger Robot public: 288*16467b97STreehugger Robot typedef typename ImplTraits::ParserType ComponentType; 289*16467b97STreehugger Robot }; 290*16467b97STreehugger Robot 291*16467b97STreehugger Robot template<class ImplTraits> 292*16467b97STreehugger Robot class ComponentTypeFinder< ImplTraits, typename ImplTraits::TreeNodeStreamType> 293*16467b97STreehugger Robot { 294*16467b97STreehugger Robot public: 295*16467b97STreehugger Robot typedef typename ImplTraits::TreeParserType ComponentType; 296*16467b97STreehugger Robot }; 297*16467b97STreehugger Robot 298*16467b97STreehugger Robot 299*16467b97STreehugger Robot ANTLR_END_NAMESPACE() 300*16467b97STreehugger Robot 301*16467b97STreehugger Robot #endif 302