Click here to Skip to main content
15,891,529 members
Articles / Desktop Programming / WPF

ListView, ComboBox, and ObservableCollection<T>

Rate me:
Please Sign up or sign in to vote.
4.36/5 (8 votes)
3 Feb 2010MIT5 min read 82.2K   4.9K   29  
An article on WPF data binding using ObservableCollection.
// $ANTLR 3.1.3 Mar 17, 2009 19:23:44 G3D.g 2009-08-27 17:15:29


using System;
using Antlr.Runtime;
using IList 		= System.Collections.IList;
using ArrayList 	= System.Collections.ArrayList;
using Stack 		= Antlr.Runtime.Collections.StackList;


namespace 
	GeometryViz3D.Model

{
public class G3DLexer : Lexer {
    public const int O = 14;
    public const int OctalLiteral = 10;
    public const int Digit = 47;
    public const int HexDigit = 40;
    public const int T__51 = 51;
    public const int P = 13;
    public const int V = 20;
    public const int I = 15;
    public const int F = 27;
    public const int U = 35;
    public const int VECTOR = 23;
    public const int S = 34;
    public const int D = 26;
    public const int Letter = 46;
    public const int R = 22;
    public const int T__52 = 52;
    public const int K = 31;
    public const int EscapeSequence = 43;
    public const int B = 25;
    public const int Q = 33;
    public const int M = 32;
    public const int LINE = 6;
    public const int T = 17;
    public const int FloatingPointLiteral = 12;
    public const int FloatTypeSuffix = 42;
    public const int ID = 5;
    public const int IntegerTypeSuffix = 41;
    public const int W = 36;
    public const int H = 29;
    public const int POINT = 4;
    public const int WS = 48;
    public const int CharacterLiteral = 7;
    public const int G = 28;
    public const int COMMENT = 49;
    public const int StringLiteral = 8;
    public const int A = 24;
    public const int LINE_COMMENT = 50;
    public const int N = 16;
    public const int X = 37;
    public const int Z = 39;
    public const int UnicodeEscape = 44;
    public const int HexLiteral = 9;
    public const int C = 21;
    public const int EOF = -1;
    public const int L = 18;
    public const int T__53 = 53;
    public const int DecimalLiteral = 11;
    public const int OctalEscape = 45;
    public const int Y = 38;
    public const int J = 30;
    public const int E = 19;

    // delegates
    // delegators

    public G3DLexer() 
    {
		InitializeCyclicDFAs();
    }
    public G3DLexer(ICharStream input)
		: this(input, null) {
    }
    public G3DLexer(ICharStream input, RecognizerSharedState state)
		: base(input, state) {
		InitializeCyclicDFAs(); 

    }
    
    override public string GrammarFileName
    {
    	get { return "G3D.g";} 
    }

    // $ANTLR start "T__51"
    public void mT__51() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = T__51;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:11:7: ( '=' )
            // G3D.g:11:9: '='
            {
            	Match('='); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "T__51"

    // $ANTLR start "T__52"
    public void mT__52() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = T__52;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:12:7: ( '+' )
            // G3D.g:12:9: '+'
            {
            	Match('+'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "T__52"

    // $ANTLR start "T__53"
    public void mT__53() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = T__53;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:13:7: ( '-' )
            // G3D.g:13:9: '-'
            {
            	Match('-'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "T__53"

    // $ANTLR start "POINT"
    public void mPOINT() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = POINT;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:74:2: ( P O I N T )
            // G3D.g:74:4: P O I N T
            {
            	mP(); 
            	mO(); 
            	mI(); 
            	mN(); 
            	mT(); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "POINT"

    // $ANTLR start "LINE"
    public void mLINE() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = LINE;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:78:2: ( L I N E )
            // G3D.g:78:4: L I N E
            {
            	mL(); 
            	mI(); 
            	mN(); 
            	mE(); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "LINE"

    // $ANTLR start "VECTOR"
    public void mVECTOR() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = VECTOR;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:82:2: ( V E C T O R )
            // G3D.g:82:4: V E C T O R
            {
            	mV(); 
            	mE(); 
            	mC(); 
            	mT(); 
            	mO(); 
            	mR(); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "VECTOR"

    // $ANTLR start "A"
    public void mA() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:85:11: ( ( 'a' | 'A' ) )
            // G3D.g:85:12: ( 'a' | 'A' )
            {
            	if ( input.LA(1) == 'A' || input.LA(1) == 'a' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "A"

    // $ANTLR start "B"
    public void mB() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:86:11: ( ( 'b' | 'B' ) )
            // G3D.g:86:12: ( 'b' | 'B' )
            {
            	if ( input.LA(1) == 'B' || input.LA(1) == 'b' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "B"

    // $ANTLR start "C"
    public void mC() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:87:11: ( ( 'c' | 'C' ) )
            // G3D.g:87:12: ( 'c' | 'C' )
            {
            	if ( input.LA(1) == 'C' || input.LA(1) == 'c' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "C"

    // $ANTLR start "D"
    public void mD() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:88:11: ( ( 'd' | 'D' ) )
            // G3D.g:88:12: ( 'd' | 'D' )
            {
            	if ( input.LA(1) == 'D' || input.LA(1) == 'd' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "D"

    // $ANTLR start "E"
    public void mE() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:89:11: ( ( 'e' | 'E' ) )
            // G3D.g:89:12: ( 'e' | 'E' )
            {
            	if ( input.LA(1) == 'E' || input.LA(1) == 'e' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "E"

    // $ANTLR start "F"
    public void mF() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:90:11: ( ( 'f' | 'F' ) )
            // G3D.g:90:12: ( 'f' | 'F' )
            {
            	if ( input.LA(1) == 'F' || input.LA(1) == 'f' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "F"

    // $ANTLR start "G"
    public void mG() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:91:11: ( ( 'g' | 'G' ) )
            // G3D.g:91:12: ( 'g' | 'G' )
            {
            	if ( input.LA(1) == 'G' || input.LA(1) == 'g' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "G"

    // $ANTLR start "H"
    public void mH() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:92:11: ( ( 'h' | 'H' ) )
            // G3D.g:92:12: ( 'h' | 'H' )
            {
            	if ( input.LA(1) == 'H' || input.LA(1) == 'h' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "H"

    // $ANTLR start "I"
    public void mI() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:93:11: ( ( 'i' | 'I' ) )
            // G3D.g:93:12: ( 'i' | 'I' )
            {
            	if ( input.LA(1) == 'I' || input.LA(1) == 'i' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "I"

    // $ANTLR start "J"
    public void mJ() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:94:11: ( ( 'j' | 'J' ) )
            // G3D.g:94:12: ( 'j' | 'J' )
            {
            	if ( input.LA(1) == 'J' || input.LA(1) == 'j' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "J"

    // $ANTLR start "K"
    public void mK() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:95:11: ( ( 'k' | 'K' ) )
            // G3D.g:95:12: ( 'k' | 'K' )
            {
            	if ( input.LA(1) == 'K' || input.LA(1) == 'k' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "K"

    // $ANTLR start "L"
    public void mL() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:96:11: ( ( 'l' | 'L' ) )
            // G3D.g:96:12: ( 'l' | 'L' )
            {
            	if ( input.LA(1) == 'L' || input.LA(1) == 'l' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "L"

    // $ANTLR start "M"
    public void mM() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:97:11: ( ( 'm' | 'M' ) )
            // G3D.g:97:12: ( 'm' | 'M' )
            {
            	if ( input.LA(1) == 'M' || input.LA(1) == 'm' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "M"

    // $ANTLR start "N"
    public void mN() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:98:11: ( ( 'n' | 'N' ) )
            // G3D.g:98:12: ( 'n' | 'N' )
            {
            	if ( input.LA(1) == 'N' || input.LA(1) == 'n' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "N"

    // $ANTLR start "O"
    public void mO() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:99:11: ( ( 'o' | 'O' ) )
            // G3D.g:99:12: ( 'o' | 'O' )
            {
            	if ( input.LA(1) == 'O' || input.LA(1) == 'o' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "O"

    // $ANTLR start "P"
    public void mP() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:100:11: ( ( 'p' | 'P' ) )
            // G3D.g:100:12: ( 'p' | 'P' )
            {
            	if ( input.LA(1) == 'P' || input.LA(1) == 'p' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "P"

    // $ANTLR start "Q"
    public void mQ() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:101:11: ( ( 'q' | 'Q' ) )
            // G3D.g:101:12: ( 'q' | 'Q' )
            {
            	if ( input.LA(1) == 'Q' || input.LA(1) == 'q' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "Q"

    // $ANTLR start "R"
    public void mR() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:102:11: ( ( 'r' | 'R' ) )
            // G3D.g:102:12: ( 'r' | 'R' )
            {
            	if ( input.LA(1) == 'R' || input.LA(1) == 'r' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "R"

    // $ANTLR start "S"
    public void mS() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:103:11: ( ( 's' | 'S' ) )
            // G3D.g:103:12: ( 's' | 'S' )
            {
            	if ( input.LA(1) == 'S' || input.LA(1) == 's' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "S"

    // $ANTLR start "T"
    public void mT() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:104:11: ( ( 't' | 'T' ) )
            // G3D.g:104:12: ( 't' | 'T' )
            {
            	if ( input.LA(1) == 'T' || input.LA(1) == 't' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "T"

    // $ANTLR start "U"
    public void mU() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:105:11: ( ( 'u' | 'U' ) )
            // G3D.g:105:12: ( 'u' | 'U' )
            {
            	if ( input.LA(1) == 'U' || input.LA(1) == 'u' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "U"

    // $ANTLR start "V"
    public void mV() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:106:11: ( ( 'v' | 'V' ) )
            // G3D.g:106:12: ( 'v' | 'V' )
            {
            	if ( input.LA(1) == 'V' || input.LA(1) == 'v' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "V"

    // $ANTLR start "W"
    public void mW() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:107:11: ( ( 'w' | 'W' ) )
            // G3D.g:107:12: ( 'w' | 'W' )
            {
            	if ( input.LA(1) == 'W' || input.LA(1) == 'w' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "W"

    // $ANTLR start "X"
    public void mX() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:108:11: ( ( 'x' | 'X' ) )
            // G3D.g:108:12: ( 'x' | 'X' )
            {
            	if ( input.LA(1) == 'X' || input.LA(1) == 'x' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "X"

    // $ANTLR start "Y"
    public void mY() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:109:11: ( ( 'y' | 'Y' ) )
            // G3D.g:109:12: ( 'y' | 'Y' )
            {
            	if ( input.LA(1) == 'Y' || input.LA(1) == 'y' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "Y"

    // $ANTLR start "Z"
    public void mZ() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:110:11: ( ( 'z' | 'Z' ) )
            // G3D.g:110:12: ( 'z' | 'Z' )
            {
            	if ( input.LA(1) == 'Z' || input.LA(1) == 'z' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "Z"

    // $ANTLR start "HexLiteral"
    public void mHexLiteral() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = HexLiteral;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:112:12: ( '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )? )
            // G3D.g:112:14: '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )?
            {
            	Match('0'); 
            	if ( input.LA(1) == 'X' || input.LA(1) == 'x' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}

            	// G3D.g:112:28: ( HexDigit )+
            	int cnt1 = 0;
            	do 
            	{
            	    int alt1 = 2;
            	    int LA1_0 = input.LA(1);

            	    if ( ((LA1_0 >= '0' && LA1_0 <= '9') || (LA1_0 >= 'A' && LA1_0 <= 'F') || (LA1_0 >= 'a' && LA1_0 <= 'f')) )
            	    {
            	        alt1 = 1;
            	    }


            	    switch (alt1) 
            		{
            			case 1 :
            			    // G3D.g:112:28: HexDigit
            			    {
            			    	mHexDigit(); 

            			    }
            			    break;

            			default:
            			    if ( cnt1 >= 1 ) goto loop1;
            		            EarlyExitException eee1 =
            		                new EarlyExitException(1, input);
            		            throw eee1;
            	    }
            	    cnt1++;
            	} while (true);

            	loop1:
            		;	// Stops C# compiler whining that label 'loop1' has no statements

            	// G3D.g:112:38: ( IntegerTypeSuffix )?
            	int alt2 = 2;
            	int LA2_0 = input.LA(1);

            	if ( (LA2_0 == 'L' || LA2_0 == 'l') )
            	{
            	    alt2 = 1;
            	}
            	switch (alt2) 
            	{
            	    case 1 :
            	        // G3D.g:112:38: IntegerTypeSuffix
            	        {
            	        	mIntegerTypeSuffix(); 

            	        }
            	        break;

            	}


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "HexLiteral"

    // $ANTLR start "DecimalLiteral"
    public void mDecimalLiteral() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = DecimalLiteral;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:114:16: ( ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )? )
            // G3D.g:114:18: ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )?
            {
            	// G3D.g:114:18: ( '0' | '1' .. '9' ( '0' .. '9' )* )
            	int alt4 = 2;
            	int LA4_0 = input.LA(1);

            	if ( (LA4_0 == '0') )
            	{
            	    alt4 = 1;
            	}
            	else if ( ((LA4_0 >= '1' && LA4_0 <= '9')) )
            	{
            	    alt4 = 2;
            	}
            	else 
            	{
            	    NoViableAltException nvae_d4s0 =
            	        new NoViableAltException("", 4, 0, input);

            	    throw nvae_d4s0;
            	}
            	switch (alt4) 
            	{
            	    case 1 :
            	        // G3D.g:114:19: '0'
            	        {
            	        	Match('0'); 

            	        }
            	        break;
            	    case 2 :
            	        // G3D.g:114:25: '1' .. '9' ( '0' .. '9' )*
            	        {
            	        	MatchRange('1','9'); 
            	        	// G3D.g:114:34: ( '0' .. '9' )*
            	        	do 
            	        	{
            	        	    int alt3 = 2;
            	        	    int LA3_0 = input.LA(1);

            	        	    if ( ((LA3_0 >= '0' && LA3_0 <= '9')) )
            	        	    {
            	        	        alt3 = 1;
            	        	    }


            	        	    switch (alt3) 
            	        		{
            	        			case 1 :
            	        			    // G3D.g:114:34: '0' .. '9'
            	        			    {
            	        			    	MatchRange('0','9'); 

            	        			    }
            	        			    break;

            	        			default:
            	        			    goto loop3;
            	        	    }
            	        	} while (true);

            	        	loop3:
            	        		;	// Stops C# compiler whining that label 'loop3' has no statements


            	        }
            	        break;

            	}

            	// G3D.g:114:45: ( IntegerTypeSuffix )?
            	int alt5 = 2;
            	int LA5_0 = input.LA(1);

            	if ( (LA5_0 == 'L' || LA5_0 == 'l') )
            	{
            	    alt5 = 1;
            	}
            	switch (alt5) 
            	{
            	    case 1 :
            	        // G3D.g:114:45: IntegerTypeSuffix
            	        {
            	        	mIntegerTypeSuffix(); 

            	        }
            	        break;

            	}


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "DecimalLiteral"

    // $ANTLR start "OctalLiteral"
    public void mOctalLiteral() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = OctalLiteral;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:116:14: ( '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )? )
            // G3D.g:116:16: '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )?
            {
            	Match('0'); 
            	// G3D.g:116:20: ( '0' .. '7' )+
            	int cnt6 = 0;
            	do 
            	{
            	    int alt6 = 2;
            	    int LA6_0 = input.LA(1);

            	    if ( ((LA6_0 >= '0' && LA6_0 <= '7')) )
            	    {
            	        alt6 = 1;
            	    }


            	    switch (alt6) 
            		{
            			case 1 :
            			    // G3D.g:116:21: '0' .. '7'
            			    {
            			    	MatchRange('0','7'); 

            			    }
            			    break;

            			default:
            			    if ( cnt6 >= 1 ) goto loop6;
            		            EarlyExitException eee6 =
            		                new EarlyExitException(6, input);
            		            throw eee6;
            	    }
            	    cnt6++;
            	} while (true);

            	loop6:
            		;	// Stops C# compiler whining that label 'loop6' has no statements

            	// G3D.g:116:32: ( IntegerTypeSuffix )?
            	int alt7 = 2;
            	int LA7_0 = input.LA(1);

            	if ( (LA7_0 == 'L' || LA7_0 == 'l') )
            	{
            	    alt7 = 1;
            	}
            	switch (alt7) 
            	{
            	    case 1 :
            	        // G3D.g:116:32: IntegerTypeSuffix
            	        {
            	        	mIntegerTypeSuffix(); 

            	        }
            	        break;

            	}


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "OctalLiteral"

    // $ANTLR start "HexDigit"
    public void mHexDigit() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:119:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
            // G3D.g:119:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
            {
            	if ( (input.LA(1) >= '0' && input.LA(1) <= '9') || (input.LA(1) >= 'A' && input.LA(1) <= 'F') || (input.LA(1) >= 'a' && input.LA(1) <= 'f') ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "HexDigit"

    // $ANTLR start "IntegerTypeSuffix"
    public void mIntegerTypeSuffix() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:122:19: ( ( 'l' | 'L' ) )
            // G3D.g:122:21: ( 'l' | 'L' )
            {
            	if ( input.LA(1) == 'L' || input.LA(1) == 'l' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "IntegerTypeSuffix"

    // $ANTLR start "FloatingPointLiteral"
    public void mFloatingPointLiteral() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = FloatingPointLiteral;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:125:5: ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( FloatTypeSuffix )? | ( '0' .. '9' )+ ( FloatTypeSuffix )? )
            int alt15 = 3;
            alt15 = dfa15.Predict(input);
            switch (alt15) 
            {
                case 1 :
                    // G3D.g:125:9: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( FloatTypeSuffix )?
                    {
                    	// G3D.g:125:9: ( '0' .. '9' )+
                    	int cnt8 = 0;
                    	do 
                    	{
                    	    int alt8 = 2;
                    	    int LA8_0 = input.LA(1);

                    	    if ( ((LA8_0 >= '0' && LA8_0 <= '9')) )
                    	    {
                    	        alt8 = 1;
                    	    }


                    	    switch (alt8) 
                    		{
                    			case 1 :
                    			    // G3D.g:125:10: '0' .. '9'
                    			    {
                    			    	MatchRange('0','9'); 

                    			    }
                    			    break;

                    			default:
                    			    if ( cnt8 >= 1 ) goto loop8;
                    		            EarlyExitException eee8 =
                    		                new EarlyExitException(8, input);
                    		            throw eee8;
                    	    }
                    	    cnt8++;
                    	} while (true);

                    	loop8:
                    		;	// Stops C# compiler whining that label 'loop8' has no statements

                    	Match('.'); 
                    	// G3D.g:125:25: ( '0' .. '9' )*
                    	do 
                    	{
                    	    int alt9 = 2;
                    	    int LA9_0 = input.LA(1);

                    	    if ( ((LA9_0 >= '0' && LA9_0 <= '9')) )
                    	    {
                    	        alt9 = 1;
                    	    }


                    	    switch (alt9) 
                    		{
                    			case 1 :
                    			    // G3D.g:125:26: '0' .. '9'
                    			    {
                    			    	MatchRange('0','9'); 

                    			    }
                    			    break;

                    			default:
                    			    goto loop9;
                    	    }
                    	} while (true);

                    	loop9:
                    		;	// Stops C# compiler whining that label 'loop9' has no statements

                    	// G3D.g:125:37: ( FloatTypeSuffix )?
                    	int alt10 = 2;
                    	int LA10_0 = input.LA(1);

                    	if ( (LA10_0 == 'D' || LA10_0 == 'F' || LA10_0 == 'd' || LA10_0 == 'f') )
                    	{
                    	    alt10 = 1;
                    	}
                    	switch (alt10) 
                    	{
                    	    case 1 :
                    	        // G3D.g:125:37: FloatTypeSuffix
                    	        {
                    	        	mFloatTypeSuffix(); 

                    	        }
                    	        break;

                    	}


                    }
                    break;
                case 2 :
                    // G3D.g:126:9: '.' ( '0' .. '9' )+ ( FloatTypeSuffix )?
                    {
                    	Match('.'); 
                    	// G3D.g:126:13: ( '0' .. '9' )+
                    	int cnt11 = 0;
                    	do 
                    	{
                    	    int alt11 = 2;
                    	    int LA11_0 = input.LA(1);

                    	    if ( ((LA11_0 >= '0' && LA11_0 <= '9')) )
                    	    {
                    	        alt11 = 1;
                    	    }


                    	    switch (alt11) 
                    		{
                    			case 1 :
                    			    // G3D.g:126:14: '0' .. '9'
                    			    {
                    			    	MatchRange('0','9'); 

                    			    }
                    			    break;

                    			default:
                    			    if ( cnt11 >= 1 ) goto loop11;
                    		            EarlyExitException eee11 =
                    		                new EarlyExitException(11, input);
                    		            throw eee11;
                    	    }
                    	    cnt11++;
                    	} while (true);

                    	loop11:
                    		;	// Stops C# compiler whining that label 'loop11' has no statements

                    	// G3D.g:126:25: ( FloatTypeSuffix )?
                    	int alt12 = 2;
                    	int LA12_0 = input.LA(1);

                    	if ( (LA12_0 == 'D' || LA12_0 == 'F' || LA12_0 == 'd' || LA12_0 == 'f') )
                    	{
                    	    alt12 = 1;
                    	}
                    	switch (alt12) 
                    	{
                    	    case 1 :
                    	        // G3D.g:126:25: FloatTypeSuffix
                    	        {
                    	        	mFloatTypeSuffix(); 

                    	        }
                    	        break;

                    	}


                    }
                    break;
                case 3 :
                    // G3D.g:127:9: ( '0' .. '9' )+ ( FloatTypeSuffix )?
                    {
                    	// G3D.g:127:9: ( '0' .. '9' )+
                    	int cnt13 = 0;
                    	do 
                    	{
                    	    int alt13 = 2;
                    	    int LA13_0 = input.LA(1);

                    	    if ( ((LA13_0 >= '0' && LA13_0 <= '9')) )
                    	    {
                    	        alt13 = 1;
                    	    }


                    	    switch (alt13) 
                    		{
                    			case 1 :
                    			    // G3D.g:127:10: '0' .. '9'
                    			    {
                    			    	MatchRange('0','9'); 

                    			    }
                    			    break;

                    			default:
                    			    if ( cnt13 >= 1 ) goto loop13;
                    		            EarlyExitException eee13 =
                    		                new EarlyExitException(13, input);
                    		            throw eee13;
                    	    }
                    	    cnt13++;
                    	} while (true);

                    	loop13:
                    		;	// Stops C# compiler whining that label 'loop13' has no statements

                    	// G3D.g:127:21: ( FloatTypeSuffix )?
                    	int alt14 = 2;
                    	int LA14_0 = input.LA(1);

                    	if ( (LA14_0 == 'D' || LA14_0 == 'F' || LA14_0 == 'd' || LA14_0 == 'f') )
                    	{
                    	    alt14 = 1;
                    	}
                    	switch (alt14) 
                    	{
                    	    case 1 :
                    	        // G3D.g:127:21: FloatTypeSuffix
                    	        {
                    	        	mFloatTypeSuffix(); 

                    	        }
                    	        break;

                    	}


                    }
                    break;

            }
            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "FloatingPointLiteral"

    // $ANTLR start "FloatTypeSuffix"
    public void mFloatTypeSuffix() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:131:17: ( ( 'f' | 'F' | 'd' | 'D' ) )
            // G3D.g:131:19: ( 'f' | 'F' | 'd' | 'D' )
            {
            	if ( input.LA(1) == 'D' || input.LA(1) == 'F' || input.LA(1) == 'd' || input.LA(1) == 'f' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "FloatTypeSuffix"

    // $ANTLR start "CharacterLiteral"
    public void mCharacterLiteral() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = CharacterLiteral;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:134:5: ( '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\'' )
            // G3D.g:134:9: '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\''
            {
            	Match('\''); 
            	// G3D.g:134:14: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )
            	int alt16 = 2;
            	int LA16_0 = input.LA(1);

            	if ( (LA16_0 == '\\') )
            	{
            	    alt16 = 1;
            	}
            	else if ( ((LA16_0 >= '\u0000' && LA16_0 <= '&') || (LA16_0 >= '(' && LA16_0 <= '[') || (LA16_0 >= ']' && LA16_0 <= '\uFFFF')) )
            	{
            	    alt16 = 2;
            	}
            	else 
            	{
            	    NoViableAltException nvae_d16s0 =
            	        new NoViableAltException("", 16, 0, input);

            	    throw nvae_d16s0;
            	}
            	switch (alt16) 
            	{
            	    case 1 :
            	        // G3D.g:134:16: EscapeSequence
            	        {
            	        	mEscapeSequence(); 

            	        }
            	        break;
            	    case 2 :
            	        // G3D.g:134:33: ~ ( '\\'' | '\\\\' )
            	        {
            	        	if ( (input.LA(1) >= '\u0000' && input.LA(1) <= '&') || (input.LA(1) >= '(' && input.LA(1) <= '[') || (input.LA(1) >= ']' && input.LA(1) <= '\uFFFF') ) 
            	        	{
            	        	    input.Consume();

            	        	}
            	        	else 
            	        	{
            	        	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	        	    Recover(mse);
            	        	    throw mse;}


            	        }
            	        break;

            	}

            	Match('\''); 
            	 Text = Text.Substring(1, Text.Length - 2); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "CharacterLiteral"

    // $ANTLR start "StringLiteral"
    public void mStringLiteral() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = StringLiteral;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:139:5: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
            // G3D.g:139:8: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
            {
            	Match('\"'); 
            	// G3D.g:139:12: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
            	do 
            	{
            	    int alt17 = 3;
            	    int LA17_0 = input.LA(1);

            	    if ( (LA17_0 == '\\') )
            	    {
            	        alt17 = 1;
            	    }
            	    else if ( ((LA17_0 >= '\u0000' && LA17_0 <= '!') || (LA17_0 >= '#' && LA17_0 <= '[') || (LA17_0 >= ']' && LA17_0 <= '\uFFFF')) )
            	    {
            	        alt17 = 2;
            	    }


            	    switch (alt17) 
            		{
            			case 1 :
            			    // G3D.g:139:14: EscapeSequence
            			    {
            			    	mEscapeSequence(); 

            			    }
            			    break;
            			case 2 :
            			    // G3D.g:139:31: ~ ( '\\\\' | '\"' )
            			    {
            			    	if ( (input.LA(1) >= '\u0000' && input.LA(1) <= '!') || (input.LA(1) >= '#' && input.LA(1) <= '[') || (input.LA(1) >= ']' && input.LA(1) <= '\uFFFF') ) 
            			    	{
            			    	    input.Consume();

            			    	}
            			    	else 
            			    	{
            			    	    MismatchedSetException mse = new MismatchedSetException(null,input);
            			    	    Recover(mse);
            			    	    throw mse;}


            			    }
            			    break;

            			default:
            			    goto loop17;
            	    }
            	} while (true);

            	loop17:
            		;	// Stops C# compiler whining that label 'loop17' has no statements

            	Match('\"'); 
            	 Text = Text.Substring(1, Text.Length - 2); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "StringLiteral"

    // $ANTLR start "EscapeSequence"
    public void mEscapeSequence() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:145:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UnicodeEscape | OctalEscape )
            int alt18 = 3;
            int LA18_0 = input.LA(1);

            if ( (LA18_0 == '\\') )
            {
                switch ( input.LA(2) ) 
                {
                case '\"':
                case '\'':
                case '\\':
                case 'b':
                case 'f':
                case 'n':
                case 'r':
                case 't':
                	{
                    alt18 = 1;
                    }
                    break;
                case 'u':
                	{
                    alt18 = 2;
                    }
                    break;
                case '0':
                case '1':
                case '2':
                case '3':
                case '4':
                case '5':
                case '6':
                case '7':
                	{
                    alt18 = 3;
                    }
                    break;
                	default:
                	    NoViableAltException nvae_d18s1 =
                	        new NoViableAltException("", 18, 1, input);

                	    throw nvae_d18s1;
                }

            }
            else 
            {
                NoViableAltException nvae_d18s0 =
                    new NoViableAltException("", 18, 0, input);

                throw nvae_d18s0;
            }
            switch (alt18) 
            {
                case 1 :
                    // G3D.g:145:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )
                    {
                    	Match('\\'); 
                    	if ( input.LA(1) == '\"' || input.LA(1) == '\'' || input.LA(1) == '\\' || input.LA(1) == 'b' || input.LA(1) == 'f' || input.LA(1) == 'n' || input.LA(1) == 'r' || input.LA(1) == 't' ) 
                    	{
                    	    input.Consume();

                    	}
                    	else 
                    	{
                    	    MismatchedSetException mse = new MismatchedSetException(null,input);
                    	    Recover(mse);
                    	    throw mse;}


                    }
                    break;
                case 2 :
                    // G3D.g:146:9: UnicodeEscape
                    {
                    	mUnicodeEscape(); 

                    }
                    break;
                case 3 :
                    // G3D.g:147:9: OctalEscape
                    {
                    	mOctalEscape(); 

                    }
                    break;

            }
        }
        finally 
    	{
        }
    }
    // $ANTLR end "EscapeSequence"

    // $ANTLR start "OctalEscape"
    public void mOctalEscape() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:152:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
            int alt19 = 3;
            int LA19_0 = input.LA(1);

            if ( (LA19_0 == '\\') )
            {
                int LA19_1 = input.LA(2);

                if ( ((LA19_1 >= '0' && LA19_1 <= '3')) )
                {
                    int LA19_2 = input.LA(3);

                    if ( ((LA19_2 >= '0' && LA19_2 <= '7')) )
                    {
                        int LA19_4 = input.LA(4);

                        if ( ((LA19_4 >= '0' && LA19_4 <= '7')) )
                        {
                            alt19 = 1;
                        }
                        else 
                        {
                            alt19 = 2;}
                    }
                    else 
                    {
                        alt19 = 3;}
                }
                else if ( ((LA19_1 >= '4' && LA19_1 <= '7')) )
                {
                    int LA19_3 = input.LA(3);

                    if ( ((LA19_3 >= '0' && LA19_3 <= '7')) )
                    {
                        alt19 = 2;
                    }
                    else 
                    {
                        alt19 = 3;}
                }
                else 
                {
                    NoViableAltException nvae_d19s1 =
                        new NoViableAltException("", 19, 1, input);

                    throw nvae_d19s1;
                }
            }
            else 
            {
                NoViableAltException nvae_d19s0 =
                    new NoViableAltException("", 19, 0, input);

                throw nvae_d19s0;
            }
            switch (alt19) 
            {
                case 1 :
                    // G3D.g:152:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                    {
                    	Match('\\'); 
                    	// G3D.g:152:14: ( '0' .. '3' )
                    	// G3D.g:152:15: '0' .. '3'
                    	{
                    		MatchRange('0','3'); 

                    	}

                    	// G3D.g:152:25: ( '0' .. '7' )
                    	// G3D.g:152:26: '0' .. '7'
                    	{
                    		MatchRange('0','7'); 

                    	}

                    	// G3D.g:152:36: ( '0' .. '7' )
                    	// G3D.g:152:37: '0' .. '7'
                    	{
                    		MatchRange('0','7'); 

                    	}


                    }
                    break;
                case 2 :
                    // G3D.g:153:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                    {
                    	Match('\\'); 
                    	// G3D.g:153:14: ( '0' .. '7' )
                    	// G3D.g:153:15: '0' .. '7'
                    	{
                    		MatchRange('0','7'); 

                    	}

                    	// G3D.g:153:25: ( '0' .. '7' )
                    	// G3D.g:153:26: '0' .. '7'
                    	{
                    		MatchRange('0','7'); 

                    	}


                    }
                    break;
                case 3 :
                    // G3D.g:154:9: '\\\\' ( '0' .. '7' )
                    {
                    	Match('\\'); 
                    	// G3D.g:154:14: ( '0' .. '7' )
                    	// G3D.g:154:15: '0' .. '7'
                    	{
                    		MatchRange('0','7'); 

                    	}


                    }
                    break;

            }
        }
        finally 
    	{
        }
    }
    // $ANTLR end "OctalEscape"

    // $ANTLR start "UnicodeEscape"
    public void mUnicodeEscape() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:159:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
            // G3D.g:159:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
            {
            	Match('\\'); 
            	Match('u'); 
            	mHexDigit(); 
            	mHexDigit(); 
            	mHexDigit(); 
            	mHexDigit(); 

            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "UnicodeEscape"

    // $ANTLR start "ID"
    public void mID() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = ID;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:163:5: ( Letter ( Letter | Digit )* )
            // G3D.g:163:9: Letter ( Letter | Digit )*
            {
            	mLetter(); 
            	// G3D.g:163:16: ( Letter | Digit )*
            	do 
            	{
            	    int alt20 = 2;
            	    int LA20_0 = input.LA(1);

            	    if ( (LA20_0 == '$' || (LA20_0 >= '0' && LA20_0 <= '9') || (LA20_0 >= 'A' && LA20_0 <= 'Z') || LA20_0 == '_' || (LA20_0 >= 'a' && LA20_0 <= 'z') || (LA20_0 >= '\u00C0' && LA20_0 <= '\u00D6') || (LA20_0 >= '\u00D8' && LA20_0 <= '\u00F6') || (LA20_0 >= '\u00F8' && LA20_0 <= '\u1FFF') || (LA20_0 >= '\u3040' && LA20_0 <= '\u318F') || (LA20_0 >= '\u3300' && LA20_0 <= '\u337F') || (LA20_0 >= '\u3400' && LA20_0 <= '\u3D2D') || (LA20_0 >= '\u4E00' && LA20_0 <= '\u9FFF') || (LA20_0 >= '\uF900' && LA20_0 <= '\uFAFF')) )
            	    {
            	        alt20 = 1;
            	    }


            	    switch (alt20) 
            		{
            			case 1 :
            			    // G3D.g:
            			    {
            			    	if ( input.LA(1) == '$' || (input.LA(1) >= '0' && input.LA(1) <= '9') || (input.LA(1) >= 'A' && input.LA(1) <= 'Z') || input.LA(1) == '_' || (input.LA(1) >= 'a' && input.LA(1) <= 'z') || (input.LA(1) >= '\u00C0' && input.LA(1) <= '\u00D6') || (input.LA(1) >= '\u00D8' && input.LA(1) <= '\u00F6') || (input.LA(1) >= '\u00F8' && input.LA(1) <= '\u1FFF') || (input.LA(1) >= '\u3040' && input.LA(1) <= '\u318F') || (input.LA(1) >= '\u3300' && input.LA(1) <= '\u337F') || (input.LA(1) >= '\u3400' && input.LA(1) <= '\u3D2D') || (input.LA(1) >= '\u4E00' && input.LA(1) <= '\u9FFF') || (input.LA(1) >= '\uF900' && input.LA(1) <= '\uFAFF') ) 
            			    	{
            			    	    input.Consume();

            			    	}
            			    	else 
            			    	{
            			    	    MismatchedSetException mse = new MismatchedSetException(null,input);
            			    	    Recover(mse);
            			    	    throw mse;}


            			    }
            			    break;

            			default:
            			    goto loop20;
            	    }
            	} while (true);

            	loop20:
            		;	// Stops C# compiler whining that label 'loop20' has no statements


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "ID"

    // $ANTLR start "Letter"
    public void mLetter() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:168:5: ( '\\u0024' | '\\u0041' .. '\\u005a' | '\\u005f' | '\\u0061' .. '\\u007a' | '\\u00c0' .. '\\u00d6' | '\\u00d8' .. '\\u00f6' | '\\u00f8' .. '\\u00ff' | '\\u0100' .. '\\u1fff' | '\\u3040' .. '\\u318f' | '\\u3300' .. '\\u337f' | '\\u3400' .. '\\u3d2d' | '\\u4e00' .. '\\u9fff' | '\\uf900' .. '\\ufaff' )
            // G3D.g:
            {
            	if ( input.LA(1) == '$' || (input.LA(1) >= 'A' && input.LA(1) <= 'Z') || input.LA(1) == '_' || (input.LA(1) >= 'a' && input.LA(1) <= 'z') || (input.LA(1) >= '\u00C0' && input.LA(1) <= '\u00D6') || (input.LA(1) >= '\u00D8' && input.LA(1) <= '\u00F6') || (input.LA(1) >= '\u00F8' && input.LA(1) <= '\u1FFF') || (input.LA(1) >= '\u3040' && input.LA(1) <= '\u318F') || (input.LA(1) >= '\u3300' && input.LA(1) <= '\u337F') || (input.LA(1) >= '\u3400' && input.LA(1) <= '\u3D2D') || (input.LA(1) >= '\u4E00' && input.LA(1) <= '\u9FFF') || (input.LA(1) >= '\uF900' && input.LA(1) <= '\uFAFF') ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "Letter"

    // $ANTLR start "Digit"
    public void mDigit() // throws RecognitionException [2]
    {
    		try
    		{
            // G3D.g:185:5: ( '\\u0030' .. '\\u0039' | '\\u0660' .. '\\u0669' | '\\u06f0' .. '\\u06f9' | '\\u0966' .. '\\u096f' | '\\u09e6' .. '\\u09ef' | '\\u0a66' .. '\\u0a6f' | '\\u0ae6' .. '\\u0aef' | '\\u0b66' .. '\\u0b6f' | '\\u0be7' .. '\\u0bef' | '\\u0c66' .. '\\u0c6f' | '\\u0ce6' .. '\\u0cef' | '\\u0d66' .. '\\u0d6f' | '\\u0e50' .. '\\u0e59' | '\\u0ed0' .. '\\u0ed9' | '\\u1040' .. '\\u1049' )
            // G3D.g:
            {
            	if ( (input.LA(1) >= '0' && input.LA(1) <= '9') || (input.LA(1) >= '\u0660' && input.LA(1) <= '\u0669') || (input.LA(1) >= '\u06F0' && input.LA(1) <= '\u06F9') || (input.LA(1) >= '\u0966' && input.LA(1) <= '\u096F') || (input.LA(1) >= '\u09E6' && input.LA(1) <= '\u09EF') || (input.LA(1) >= '\u0A66' && input.LA(1) <= '\u0A6F') || (input.LA(1) >= '\u0AE6' && input.LA(1) <= '\u0AEF') || (input.LA(1) >= '\u0B66' && input.LA(1) <= '\u0B6F') || (input.LA(1) >= '\u0BE7' && input.LA(1) <= '\u0BEF') || (input.LA(1) >= '\u0C66' && input.LA(1) <= '\u0C6F') || (input.LA(1) >= '\u0CE6' && input.LA(1) <= '\u0CEF') || (input.LA(1) >= '\u0D66' && input.LA(1) <= '\u0D6F') || (input.LA(1) >= '\u0E50' && input.LA(1) <= '\u0E59') || (input.LA(1) >= '\u0ED0' && input.LA(1) <= '\u0ED9') || (input.LA(1) >= '\u1040' && input.LA(1) <= '\u1049') ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}


            }

        }
        finally 
    	{
        }
    }
    // $ANTLR end "Digit"

    // $ANTLR start "WS"
    public void mWS() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = WS;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:202:5: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) )
            // G3D.g:202:8: ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' )
            {
            	if ( (input.LA(1) >= '\t' && input.LA(1) <= '\n') || (input.LA(1) >= '\f' && input.LA(1) <= '\r') || input.LA(1) == ' ' ) 
            	{
            	    input.Consume();

            	}
            	else 
            	{
            	    MismatchedSetException mse = new MismatchedSetException(null,input);
            	    Recover(mse);
            	    throw mse;}

            	_channel=HIDDEN;

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "WS"

    // $ANTLR start "COMMENT"
    public void mCOMMENT() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = COMMENT;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:206:5: ( '/*' ( options {greedy=false; } : . )* '*/' )
            // G3D.g:206:9: '/*' ( options {greedy=false; } : . )* '*/'
            {
            	Match("/*"); 

            	// G3D.g:206:14: ( options {greedy=false; } : . )*
            	do 
            	{
            	    int alt21 = 2;
            	    int LA21_0 = input.LA(1);

            	    if ( (LA21_0 == '*') )
            	    {
            	        int LA21_1 = input.LA(2);

            	        if ( (LA21_1 == '/') )
            	        {
            	            alt21 = 2;
            	        }
            	        else if ( ((LA21_1 >= '\u0000' && LA21_1 <= '.') || (LA21_1 >= '0' && LA21_1 <= '\uFFFF')) )
            	        {
            	            alt21 = 1;
            	        }


            	    }
            	    else if ( ((LA21_0 >= '\u0000' && LA21_0 <= ')') || (LA21_0 >= '+' && LA21_0 <= '\uFFFF')) )
            	    {
            	        alt21 = 1;
            	    }


            	    switch (alt21) 
            		{
            			case 1 :
            			    // G3D.g:206:42: .
            			    {
            			    	MatchAny(); 

            			    }
            			    break;

            			default:
            			    goto loop21;
            	    }
            	} while (true);

            	loop21:
            		;	// Stops C# compiler whining that label 'loop21' has no statements

            	Match("*/"); 

            	_channel=HIDDEN;

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "COMMENT"

    // $ANTLR start "LINE_COMMENT"
    public void mLINE_COMMENT() // throws RecognitionException [2]
    {
    		try
    		{
            int _type = LINE_COMMENT;
    	int _channel = DEFAULT_TOKEN_CHANNEL;
            // G3D.g:210:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
            // G3D.g:210:7: '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
            {
            	Match("//"); 

            	// G3D.g:210:12: (~ ( '\\n' | '\\r' ) )*
            	do 
            	{
            	    int alt22 = 2;
            	    int LA22_0 = input.LA(1);

            	    if ( ((LA22_0 >= '\u0000' && LA22_0 <= '\t') || (LA22_0 >= '\u000B' && LA22_0 <= '\f') || (LA22_0 >= '\u000E' && LA22_0 <= '\uFFFF')) )
            	    {
            	        alt22 = 1;
            	    }


            	    switch (alt22) 
            		{
            			case 1 :
            			    // G3D.g:210:12: ~ ( '\\n' | '\\r' )
            			    {
            			    	if ( (input.LA(1) >= '\u0000' && input.LA(1) <= '\t') || (input.LA(1) >= '\u000B' && input.LA(1) <= '\f') || (input.LA(1) >= '\u000E' && input.LA(1) <= '\uFFFF') ) 
            			    	{
            			    	    input.Consume();

            			    	}
            			    	else 
            			    	{
            			    	    MismatchedSetException mse = new MismatchedSetException(null,input);
            			    	    Recover(mse);
            			    	    throw mse;}


            			    }
            			    break;

            			default:
            			    goto loop22;
            	    }
            	} while (true);

            	loop22:
            		;	// Stops C# compiler whining that label 'loop22' has no statements

            	// G3D.g:210:26: ( '\\r' )?
            	int alt23 = 2;
            	int LA23_0 = input.LA(1);

            	if ( (LA23_0 == '\r') )
            	{
            	    alt23 = 1;
            	}
            	switch (alt23) 
            	{
            	    case 1 :
            	        // G3D.g:210:26: '\\r'
            	        {
            	        	Match('\r'); 

            	        }
            	        break;

            	}

            	Match('\n'); 
            	_channel=HIDDEN;

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally 
    	{
        }
    }
    // $ANTLR end "LINE_COMMENT"

    override public void mTokens() // throws RecognitionException 
    {
        // G3D.g:1:8: ( T__51 | T__52 | T__53 | POINT | LINE | VECTOR | HexLiteral | DecimalLiteral | OctalLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | ID | WS | COMMENT | LINE_COMMENT )
        int alt24 = 16;
        alt24 = dfa24.Predict(input);
        switch (alt24) 
        {
            case 1 :
                // G3D.g:1:10: T__51
                {
                	mT__51(); 

                }
                break;
            case 2 :
                // G3D.g:1:16: T__52
                {
                	mT__52(); 

                }
                break;
            case 3 :
                // G3D.g:1:22: T__53
                {
                	mT__53(); 

                }
                break;
            case 4 :
                // G3D.g:1:28: POINT
                {
                	mPOINT(); 

                }
                break;
            case 5 :
                // G3D.g:1:34: LINE
                {
                	mLINE(); 

                }
                break;
            case 6 :
                // G3D.g:1:39: VECTOR
                {
                	mVECTOR(); 

                }
                break;
            case 7 :
                // G3D.g:1:46: HexLiteral
                {
                	mHexLiteral(); 

                }
                break;
            case 8 :
                // G3D.g:1:57: DecimalLiteral
                {
                	mDecimalLiteral(); 

                }
                break;
            case 9 :
                // G3D.g:1:72: OctalLiteral
                {
                	mOctalLiteral(); 

                }
                break;
            case 10 :
                // G3D.g:1:85: FloatingPointLiteral
                {
                	mFloatingPointLiteral(); 

                }
                break;
            case 11 :
                // G3D.g:1:106: CharacterLiteral
                {
                	mCharacterLiteral(); 

                }
                break;
            case 12 :
                // G3D.g:1:123: StringLiteral
                {
                	mStringLiteral(); 

                }
                break;
            case 13 :
                // G3D.g:1:137: ID
                {
                	mID(); 

                }
                break;
            case 14 :
                // G3D.g:1:140: WS
                {
                	mWS(); 

                }
                break;
            case 15 :
                // G3D.g:1:143: COMMENT
                {
                	mCOMMENT(); 

                }
                break;
            case 16 :
                // G3D.g:1:151: LINE_COMMENT
                {
                	mLINE_COMMENT(); 

                }
                break;

        }

    }


    protected DFA15 dfa15;
    protected DFA24 dfa24;
	private void InitializeCyclicDFAs()
	{
	    this.dfa15 = new DFA15(this);
	    this.dfa24 = new DFA24(this);


	}

    const string DFA15_eotS =
        "\x01\uffff\x01\x03\x03\uffff";
    const string DFA15_eofS =
        "\x05\uffff";
    const string DFA15_minS =
        "\x02\x2e\x03\uffff";
    const string DFA15_maxS =
        "\x02\x39\x03\uffff";
    const string DFA15_acceptS =
        "\x02\uffff\x01\x02\x01\x03\x01\x01";
    const string DFA15_specialS =
        "\x05\uffff}>";
    static readonly string[] DFA15_transitionS = {
            "\x01\x02\x01\uffff\x0a\x01",
            "\x01\x04\x01\uffff\x0a\x01",
            "",
            "",
            ""
    };

    static readonly short[] DFA15_eot = DFA.UnpackEncodedString(DFA15_eotS);
    static readonly short[] DFA15_eof = DFA.UnpackEncodedString(DFA15_eofS);
    static readonly char[] DFA15_min = DFA.UnpackEncodedStringToUnsignedChars(DFA15_minS);
    static readonly char[] DFA15_max = DFA.UnpackEncodedStringToUnsignedChars(DFA15_maxS);
    static readonly short[] DFA15_accept = DFA.UnpackEncodedString(DFA15_acceptS);
    static readonly short[] DFA15_special = DFA.UnpackEncodedString(DFA15_specialS);
    static readonly short[][] DFA15_transition = DFA.UnpackEncodedStringArray(DFA15_transitionS);

    protected class DFA15 : DFA
    {
        public DFA15(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 15;
            this.eot = DFA15_eot;
            this.eof = DFA15_eof;
            this.min = DFA15_min;
            this.max = DFA15_max;
            this.accept = DFA15_accept;
            this.special = DFA15_special;
            this.transition = DFA15_transition;

        }

        override public string Description
        {
            get { return "124:1: FloatingPointLiteral : ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( FloatTypeSuffix )? | ( '0' .. '9' )+ ( FloatTypeSuffix )? );"; }
        }

    }

    const string DFA24_eotS =
        "\x04\uffff\x03\x0c\x02\x13\x06\uffff\x03\x0c\x02\uffff\x01\x1b"+
        "\x01\x13\x02\uffff\x03\x0c\x01\uffff\x01\x0c\x01\x20\x01\x0c\x01"+
        "\x22\x01\uffff\x01\x0c\x01\uffff\x01\x24\x01\uffff";
    const string DFA24_eofS =
        "\x25\uffff";
    const string DFA24_minS =
        "\x01\x09\x03\uffff\x01\x4f\x01\x49\x01\x45\x02\x2e\x05\uffff\x01"+
        "\x2a\x01\x49\x01\x4e\x01\x43\x02\uffff\x02\x2e\x02\uffff\x01\x4e"+
        "\x01\x45\x01\x54\x01\uffff\x01\x54\x01\x24\x01\x4f\x01\x24\x01\uffff"+
        "\x01\x52\x01\uffff\x01\x24\x01\uffff";
    const string DFA24_maxS =
        "\x01\ufaff\x03\uffff\x01\x6f\x01\x69\x01\x65\x01\x78\x01\x66\x05"+
        "\uffff\x01\x2f\x01\x69\x01\x6e\x01\x63\x02\uffff\x02\x66\x02\uffff"+
        "\x01\x6e\x01\x65\x01\x74\x01\uffff\x01\x74\x01\ufaff\x01\x6f\x01"+
        "\ufaff\x01\uffff\x01\x72\x01\uffff\x01\ufaff\x01\uffff";
    const string DFA24_acceptS =
        "\x01\uffff\x01\x01\x01\x02\x01\x03\x05\uffff\x01\x0a\x01\x0b\x01"+
        "\x0c\x01\x0d\x01\x0e\x04\uffff\x01\x07\x01\x08\x02\uffff\x01\x0f"+
        "\x01\x10\x03\uffff\x01\x09\x04\uffff\x01\x05\x01\uffff\x01\x04\x01"+
        "\uffff\x01\x06";
    const string DFA24_specialS =
        "\x25\uffff}>";
    static readonly string[] DFA24_transitionS = {
            "\x02\x0d\x01\uffff\x02\x0d\x12\uffff\x01\x0d\x01\uffff\x01"+
            "\x0b\x01\uffff\x01\x0c\x02\uffff\x01\x0a\x03\uffff\x01\x02\x01"+
            "\uffff\x01\x03\x01\x09\x01\x0e\x01\x07\x09\x08\x03\uffff\x01"+
            "\x01\x03\uffff\x0b\x0c\x01\x05\x03\x0c\x01\x04\x05\x0c\x01\x06"+
            "\x04\x0c\x04\uffff\x01\x0c\x01\uffff\x0b\x0c\x01\x05\x03\x0c"+
            "\x01\x04\x05\x0c\x01\x06\x04\x0c\x45\uffff\x17\x0c\x01\uffff"+
            "\x1f\x0c\x01\uffff\u1f08\x0c\u1040\uffff\u0150\x0c\u0170\uffff"+
            "\u0080\x0c\u0080\uffff\u092e\x0c\u10d2\uffff\u5200\x0c\u5900"+
            "\uffff\u0200\x0c",
            "",
            "",
            "",
            "\x01\x0f\x1f\uffff\x01\x0f",
            "\x01\x10\x1f\uffff\x01\x10",
            "\x01\x11\x1f\uffff\x01\x11",
            "\x01\x09\x01\uffff\x08\x14\x02\x09\x0a\uffff\x01\x09\x01\uffff"+
            "\x01\x09\x11\uffff\x01\x12\x0b\uffff\x01\x09\x01\uffff\x01\x09"+
            "\x11\uffff\x01\x12",
            "\x01\x09\x01\uffff\x0a\x15\x0a\uffff\x01\x09\x01\uffff\x01"+
            "\x09\x1d\uffff\x01\x09\x01\uffff\x01\x09",
            "",
            "",
            "",
            "",
            "",
            "\x01\x16\x04\uffff\x01\x17",
            "\x01\x18\x1f\uffff\x01\x18",
            "\x01\x19\x1f\uffff\x01\x19",
            "\x01\x1a\x1f\uffff\x01\x1a",
            "",
            "",
            "\x01\x09\x01\uffff\x08\x14\x02\x09\x0a\uffff\x01\x09\x01\uffff"+
            "\x01\x09\x1d\uffff\x01\x09\x01\uffff\x01\x09",
            "\x01\x09\x01\uffff\x0a\x15\x0a\uffff\x01\x09\x01\uffff\x01"+
            "\x09\x1d\uffff\x01\x09\x01\uffff\x01\x09",
            "",
            "",
            "\x01\x1c\x1f\uffff\x01\x1c",
            "\x01\x1d\x1f\uffff\x01\x1d",
            "\x01\x1e\x1f\uffff\x01\x1e",
            "",
            "\x01\x1f\x1f\uffff\x01\x1f",
            "\x01\x0c\x0b\uffff\x0a\x0c\x07\uffff\x1a\x0c\x04\uffff\x01"+
            "\x0c\x01\uffff\x1a\x0c\x45\uffff\x17\x0c\x01\uffff\x1f\x0c\x01"+
            "\uffff\u1f08\x0c\u1040\uffff\u0150\x0c\u0170\uffff\u0080\x0c"+
            "\u0080\uffff\u092e\x0c\u10d2\uffff\u5200\x0c\u5900\uffff\u0200"+
            "\x0c",
            "\x01\x21\x1f\uffff\x01\x21",
            "\x01\x0c\x0b\uffff\x0a\x0c\x07\uffff\x1a\x0c\x04\uffff\x01"+
            "\x0c\x01\uffff\x1a\x0c\x45\uffff\x17\x0c\x01\uffff\x1f\x0c\x01"+
            "\uffff\u1f08\x0c\u1040\uffff\u0150\x0c\u0170\uffff\u0080\x0c"+
            "\u0080\uffff\u092e\x0c\u10d2\uffff\u5200\x0c\u5900\uffff\u0200"+
            "\x0c",
            "",
            "\x01\x23\x1f\uffff\x01\x23",
            "",
            "\x01\x0c\x0b\uffff\x0a\x0c\x07\uffff\x1a\x0c\x04\uffff\x01"+
            "\x0c\x01\uffff\x1a\x0c\x45\uffff\x17\x0c\x01\uffff\x1f\x0c\x01"+
            "\uffff\u1f08\x0c\u1040\uffff\u0150\x0c\u0170\uffff\u0080\x0c"+
            "\u0080\uffff\u092e\x0c\u10d2\uffff\u5200\x0c\u5900\uffff\u0200"+
            "\x0c",
            ""
    };

    static readonly short[] DFA24_eot = DFA.UnpackEncodedString(DFA24_eotS);
    static readonly short[] DFA24_eof = DFA.UnpackEncodedString(DFA24_eofS);
    static readonly char[] DFA24_min = DFA.UnpackEncodedStringToUnsignedChars(DFA24_minS);
    static readonly char[] DFA24_max = DFA.UnpackEncodedStringToUnsignedChars(DFA24_maxS);
    static readonly short[] DFA24_accept = DFA.UnpackEncodedString(DFA24_acceptS);
    static readonly short[] DFA24_special = DFA.UnpackEncodedString(DFA24_specialS);
    static readonly short[][] DFA24_transition = DFA.UnpackEncodedStringArray(DFA24_transitionS);

    protected class DFA24 : DFA
    {
        public DFA24(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 24;
            this.eot = DFA24_eot;
            this.eof = DFA24_eof;
            this.min = DFA24_min;
            this.max = DFA24_max;
            this.accept = DFA24_accept;
            this.special = DFA24_special;
            this.transition = DFA24_transition;

        }

        override public string Description
        {
            get { return "1:1: Tokens : ( T__51 | T__52 | T__53 | POINT | LINE | VECTOR | HexLiteral | DecimalLiteral | OctalLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | ID | WS | COMMENT | LINE_COMMENT );"; }
        }

    }

 
    
}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The MIT License


Written By
Technical Lead Rockwell Automation
Singapore Singapore
He is a Software Engineer at Rockwell Automation Asia Pacific Business Center, working on RSLogix 5000. Prior to joining Rockwell Automation, he had worked for Sybase for 8 years and was the original architect of the PowerBuilder Native Interface and the PowerBuilder .NET Compiler that can compile PowerBuilder applications to .NET Windows Forms or Web Forms applications. The programming languages he has used or is using intensively include C#, C++, C and 8086 assembly.

Wu XueSong's Blog

Comments and Discussions