/** \file
 *  This C++ header file was generated by $ANTLR version 3.5.3-SNAPSHOT
 *
 *     -  From the grammar source file : MySQLLexer.g
 *     -                            On : 2016-04-19 21:06:59
 *     -                 for the lexer : MySQLLexerLexer
 *
 * Editing it, at least manually, is not wise.
 *
 * C++ language generator and runtime by Gokulakannan Somasundaram ( heavy lifting from C Run-time by Jim Idle )
 *
 *
 * The lexer MySQLLexer has the callable functions (rules) shown below,
 * which will invoke the code for the associated rule in the source grammar
 * assuming that the input stream is pointing to a token/text stream that could begin
 * this rule.
 *
 * For instance if you call the first (topmost) rule in a parser grammar, you will
 * get the results of a full parse, but calling a rule half way through the grammar will
 * allow you to pass part of a full token stream to the parser, such as for syntax checking
 * in editors and so on.
 *
 */
// [The "BSD license"]
// Copyright (c) 2005-2009 Gokulakannan Somasundaram. 
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
//    notice, this list of conditions and the following disclaimer in the
//    documentation and/or other materials provided with the distribution.
// 3. The name of the author may not be used to endorse or promote products
//    derived from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#ifndef	_MySQLLexer_H
#define _MySQLLexer_H
/* =============================================================================
 * Standard antlr3 C++ runtime definitions
 */
#include <antlr3.hpp>

/* End of standard antlr 3 runtime definitions
 * =============================================================================
 */


#include "UserTraits.hpp"
#include <vector>




namespace  Antlr3BackendImpl  {

typedef MySQLLexerTraits MySQLLexerImplTraits;


class MySQLLexerTokens
{
public:
	/** Symbolic definitions of all the tokens that the lexer will work with.
	 *
	 * Antlr will define EOF, but we can't use that as it it is too common in
	 * in C header files and that would be confusing. There is no way to filter this out at the moment
	 * so we just undef it here for now. That isn't the value we get back from C recognizers
	 * anyway. We are looking for ANTLR_TOKEN_EOF.
	 */
	enum Tokens : ANTLR_UINT32
	{
		EOF_TOKEN = MySQLLexerImplTraits::CommonTokenType::TOKEN_EOF
		, ALL_FIELDS = 4 
		, AND_SYM = 5 
		, ARROW = 6 
		, ASTERISK = 7 
		, BACKTICKED_ID = 8 
		, BIND_VAR = 9 
		, BIND_VAR_WITH_NAME = 10 
		, BIND_VAR_WITH_PARAMS = 11 
		, BITAND = 12 
		, BIT_NUM = 13 
		, COMMA = 14 
		, COMMENT_ML = 15 
		, COMMENT_SL = 16 
		, DIVIDE = 17 
		, DOT = 18 
		, EQ_SYM = 19 
		, GET = 20 
		, GTH = 21 
		, HEX_DIGIT = 22 
		, HEX_DIGIT_FRAGMENT = 23 
		, ID = 24 
		, LBRACK = 25 
		, LET = 26 
		, LPAREN = 27 
		, LTH = 28 
		, MINUS = 29 
		, MOD_SYM = 30 
		, NEGATION = 31 
		, NEWLINE = 32 
		, NOT_EQ = 33 
		, NUMBER_LIT = 34 
		, OR_SYM = 35 
		, PLUS = 36 
		, POWER_OP = 37 
		, RBRACK = 38 
		, REAL_NUMBER = 39 
		, REGULAR_ID = 40 
		, RPAREN = 41 
		, SEMI = 42 
		, SET_VAR = 43 
		, SHIFT_LEFT = 44 
		, SHIFT_RIGHT = 45 
		, SPACE_LIT = 46 
		, STRING_LITERAL = 47 
		, TEXT_STRING = 48 
		, UNSIGNED_INTEGER = 49 
		, USER_VAR = 50 
		, USER_VAR_SUBFIX2 = 51 
		, USER_VAR_SUBFIX3 = 52 
		, USER_VAR_SUBFIX4 = 53 
		, VERTBAR = 54 
		, WHITE = 55 
	};
       static const ANTLR_UINT8* getTokenName(ANTLR_UINT32 index);

protected:
	static ANTLR_UINT8* TokenNames[];

};

/** Context tracking structure for MySQLLexer
 */
class MySQLLexer : public MySQLLexerImplTraits::BaseLexerType
    , public MySQLLexerTokens
{
public:
	typedef MySQLLexerImplTraits ImplTraits;
	typedef MySQLLexer ComponentType;
	typedef ComponentType::StreamType StreamType;
	typedef MySQLLexerImplTraits::BaseLexerType BaseType;
	typedef ImplTraits::RecognizerSharedStateType<StreamType> RecognizerSharedStateType;
	typedef StreamType InputType;
	static const bool IsFiltered = false;


private:	
public:
    MySQLLexer(InputType* instream);
    MySQLLexer(InputType* instream, RecognizerSharedStateType* state);

    void init(InputType* instream  );
    static ANTLR_UINT8** getTokenNames();


    
    void  mUNSIGNED_INTEGER( );
    void  mREAL_NUMBER( );
    void  mHEX_DIGIT_FRAGMENT( );
    void  mHEX_DIGIT( );
    void  mBIT_NUM( );
    void  mNUMBER_LIT( );
    void  mDIVIDE( );
    void  mMOD_SYM( );
    void  mOR_SYM( );
    void  mAND_SYM( );
    void  mARROW( );
    void  mEQ_SYM( );
    void  mNOT_EQ( );
    void  mLET( );
    void  mGET( );
    void  mSET_VAR( );
    void  mSHIFT_LEFT( );
    void  mSHIFT_RIGHT( );
    void  mALL_FIELDS( );
    void  mSEMI( );
    void  mDOT( );
    void  mCOMMA( );
    void  mASTERISK( );
    void  mRPAREN( );
    void  mLPAREN( );
    void  mRBRACK( );
    void  mLBRACK( );
    void  mPLUS( );
    void  mMINUS( );
    void  mNEGATION( );
    void  mVERTBAR( );
    void  mBITAND( );
    void  mPOWER_OP( );
    void  mGTH( );
    void  mLTH( );
    void  mSPACE_LIT( );
    void  mNEWLINE( );
    void  mWHITE( );
    void  mCOMMENT_SL( );
    void  mCOMMENT_ML( );
    void  mID( );
    void  mBACKTICKED_ID( );
    void  mREGULAR_ID( );
    void  mTEXT_STRING( );
    void  mUSER_VAR( );
    void  mUSER_VAR_SUBFIX2( );
    void  mUSER_VAR_SUBFIX3( );
    void  mUSER_VAR_SUBFIX4( );
    void  mSTRING_LITERAL( );
    void  mBIND_VAR( );
    void  mBIND_VAR_WITH_NAME( );
    void  mTokens( );
    const char *    getGrammarFileName();
    void            reset();
    ~MySQLLexer();

};

// Function protoypes for the constructor functions that external translation units
// such as delegators and delegates may wish to call.
//

/* End of token definitions for MySQLLexer
 * =============================================================================
 */

}

#endif

/* END - Note:Keep extra line feed to satisfy UNIX systems */
