예제 #1
0
    // $ANTLR start "document"
    // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:55:1: document returns [FBXDocument doc] : (dec= declaration )+ ;
    public FBXDocument document() // throws RecognitionException [1]
    {
        FBXDocument doc = null;

        FBXDeclarationNode dec = null;


        doc = new FBXDocument();
        try
        {
            // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:57:2: ( (dec= declaration )+ )
            // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:57:4: (dec= declaration )+
            {
                // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:57:4: (dec= declaration )+
                int cnt1 = 0;
                do
                {
                    int alt1  = 2;
                    int LA1_0 = input.LA(1);

                    if ((LA1_0 == ID))
                    {
                        alt1 = 1;
                    }


                    switch (alt1)
                    {
                    case 1:
                        // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:57:5: dec= declaration
                    {
                        PushFollow(FOLLOW_declaration_in_document380);
                        dec = declaration();
                        state.followingStackPointer--;

                        doc.Add(dec);
                    }
                    break;

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

loop1:
                ;               // Stops C# compiler whinging that label 'loop1' has no statements
            }
        }
        catch (RecognitionException re)
        {
            ReportError(re);
            Recover(input, re);
        }
        finally
        {
        }
        return(doc);
    }
예제 #2
0
    // $ANTLR end "declaration"


    // $ANTLR start "list"
    // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:68:1: list[string id] returns [FBXDeclarationNode dec] : (tok= NUMBER | tok= STRING | tok= ID ) ( COMMA (tok= NUMBER | tok= STRING | tok= ID ) )* ;
    public FBXDeclarationNode list(string id) // throws RecognitionException [1]
    {
        FBXDeclarationNode dec = null;

        IToken tok = null;


        int           numbers = 0;
        int           strings = 0;
        List <string> list    = new List <string>();

        try
        {
            // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:74:2: ( (tok= NUMBER | tok= STRING | tok= ID ) ( COMMA (tok= NUMBER | tok= STRING | tok= ID ) )* )
            // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:74:4: (tok= NUMBER | tok= STRING | tok= ID ) ( COMMA (tok= NUMBER | tok= STRING | tok= ID ) )*
            {
                // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:74:4: (tok= NUMBER | tok= STRING | tok= ID )
                int alt3 = 3;
                switch (input.LA(1))
                {
                case NUMBER:
                {
                    alt3 = 1;
                }
                break;

                case STRING:
                {
                    alt3 = 2;
                }
                break;

                case ID:
                {
                    alt3 = 3;
                }
                break;

                default:
                    NoViableAltException nvae_d3s0 =
                        new NoViableAltException("", 3, 0, input);

                    throw nvae_d3s0;
                }

                switch (alt3)
                {
                case 1:
                    // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:74:5: tok= NUMBER
                {
                    tok = (IToken)Match(input, NUMBER, FOLLOW_NUMBER_in_list460);
                    numbers++;
                }
                break;

                case 2:
                    // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:74:30: tok= STRING
                {
                    tok = (IToken)Match(input, STRING, FOLLOW_STRING_in_list467);
                    strings++;
                }
                break;

                case 3:
                    // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:74:55: tok= ID
                {
                    tok = (IToken)Match(input, ID, FOLLOW_ID_in_list474);
                    strings++;
                }
                break;
                }

                list.Add(tok.Text);
                // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:75:8: ( COMMA (tok= NUMBER | tok= STRING | tok= ID ) )*
                do
                {
                    int alt5  = 2;
                    int LA5_0 = input.LA(1);

                    if ((LA5_0 == COMMA))
                    {
                        alt5 = 1;
                    }


                    switch (alt5)
                    {
                    case 1:
                        // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:75:9: COMMA (tok= NUMBER | tok= STRING | tok= ID )
                    {
                        Match(input, COMMA, FOLLOW_COMMA_in_list489);
                        // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:75:15: (tok= NUMBER | tok= STRING | tok= ID )
                        int alt4 = 3;
                        switch (input.LA(1))
                        {
                        case NUMBER:
                        {
                            alt4 = 1;
                        }
                        break;

                        case STRING:
                        {
                            alt4 = 2;
                        }
                        break;

                        case ID:
                        {
                            alt4 = 3;
                        }
                        break;

                        default:
                            NoViableAltException nvae_d4s0 =
                                new NoViableAltException("", 4, 0, input);

                            throw nvae_d4s0;
                        }

                        switch (alt4)
                        {
                        case 1:
                            // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:75:16: tok= NUMBER
                        {
                            tok = (IToken)Match(input, NUMBER, FOLLOW_NUMBER_in_list494);
                            numbers++;
                        }
                        break;

                        case 2:
                            // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:75:41: tok= STRING
                        {
                            tok = (IToken)Match(input, STRING, FOLLOW_STRING_in_list501);
                            strings++;
                        }
                        break;

                        case 3:
                            // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:75:66: tok= ID
                        {
                            tok = (IToken)Match(input, ID, FOLLOW_ID_in_list508);
                            strings++;
                        }
                        break;
                        }

                        list.Add(tok.Text);
                    }
                    break;

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

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


                if (numbers > 0 && strings == 0)
                {
                    dec = new FBXFloatListProperty(list);
                }
                else if (numbers == 0 && strings > 0)
                {
                    dec = new FBXListProperty(list, ContentType.STRING_LIST);
                }
                else
                {
                    dec = new FBXListProperty(list, ContentType.MIXED_LIST);
                }
                dec.Type = id;
            }
        }
        catch (RecognitionException re)
        {
            ReportError(re);
            Recover(input, re);
        }
        finally
        {
        }
        return(dec);
    }
예제 #3
0
    // $ANTLR end "list"


    // $ANTLR start "objectDeclaration"
    // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:93:1: objectDeclaration[string id] returns [FBXDeclarationNode dec] : ( (name= STRING ( COMMA type= STRING )? | index= NUMBER ) )? LCURLY (node= declaration )* RCURLY ;
    public FBXDeclarationNode objectDeclaration(string id) // throws RecognitionException [1]
    {
        FBXDeclarationNode dec = null;

        IToken             name  = null;
        IToken             type  = null;
        IToken             index = null;
        FBXDeclarationNode node  = null;


        try
        {
            // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:94:2: ( ( (name= STRING ( COMMA type= STRING )? | index= NUMBER ) )? LCURLY (node= declaration )* RCURLY )
            // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:94:4: ( (name= STRING ( COMMA type= STRING )? | index= NUMBER ) )? LCURLY (node= declaration )* RCURLY
            {
                // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:94:4: ( (name= STRING ( COMMA type= STRING )? | index= NUMBER ) )?
                int alt8  = 2;
                int LA8_0 = input.LA(1);

                if ((LA8_0 == NUMBER || LA8_0 == STRING))
                {
                    alt8 = 1;
                }
                switch (alt8)
                {
                case 1:
                    // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:94:6: (name= STRING ( COMMA type= STRING )? | index= NUMBER )
                {
                    // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:94:6: (name= STRING ( COMMA type= STRING )? | index= NUMBER )
                    int alt7  = 2;
                    int LA7_0 = input.LA(1);

                    if ((LA7_0 == STRING))
                    {
                        alt7 = 1;
                    }
                    else if ((LA7_0 == NUMBER))
                    {
                        alt7 = 2;
                    }
                    else
                    {
                        NoViableAltException nvae_d7s0 =
                            new NoViableAltException("", 7, 0, input);

                        throw nvae_d7s0;
                    }
                    switch (alt7)
                    {
                    case 1:
                        // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:94:8: name= STRING ( COMMA type= STRING )?
                    {
                        name = (IToken)Match(input, STRING, FOLLOW_STRING_in_objectDeclaration542);
                        // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:94:20: ( COMMA type= STRING )?
                        int alt6  = 2;
                        int LA6_0 = input.LA(1);

                        if ((LA6_0 == COMMA))
                        {
                            alt6 = 1;
                        }
                        switch (alt6)
                        {
                        case 1:
                            // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:94:21: COMMA type= STRING
                        {
                            Match(input, COMMA, FOLLOW_COMMA_in_objectDeclaration545);
                            type = (IToken)Match(input, STRING, FOLLOW_STRING_in_objectDeclaration549);
                        }
                        break;
                        }
                    }
                    break;

                    case 2:
                        // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:94:43: index= NUMBER
                    {
                        index = (IToken)Match(input, NUMBER, FOLLOW_NUMBER_in_objectDeclaration559);
                    }
                    break;
                    }


                    if (name != null)
                    {
                        dec = new FBXObject(name.Text, type != null? type.Text : null);
                    }
                    else
                    {
                        dec = new FBXObject();
                    }
                    dec.Type = id;
                    if (index != null)
                    {
                        ((FBXObject)dec).Index = int.Parse(index.Text);
                    }
                }
                break;
                }

                Match(input, LCURLY, FOLLOW_LCURLY_in_objectDeclaration570);
                // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:105:4: (node= declaration )*
                do
                {
                    int alt9  = 2;
                    int LA9_0 = input.LA(1);

                    if ((LA9_0 == ID))
                    {
                        alt9 = 1;
                    }


                    switch (alt9)
                    {
                    case 1:
                        // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:105:10: node= declaration
                    {
                        PushFollow(FOLLOW_declaration_in_objectDeclaration583);
                        node = declaration();
                        state.followingStackPointer--;


                        if (dec == null)
                        {
                            dec      = new FBXObject();
                            dec.Type = id;
                        }
                        ((FBXObject)dec).Add(node);
                    }
                    break;

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

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

                Match(input, RCURLY, FOLLOW_RCURLY_in_objectDeclaration599);

                if (dec == null)
                {
                    dec      = new FBXObject();
                    dec.Type = id;
                }
            }
        }
        catch (RecognitionException re)
        {
            ReportError(re);
            Recover(input, re);
        }
        finally
        {
        }
        return(dec);
    }
예제 #4
0
    // $ANTLR end "document"


    // $ANTLR start "declaration"
    // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:60:1: declaration returns [FBXDeclarationNode dec] : id= ID COLON (dec1= list[id.Text] | dec2= objectDeclaration[id.Text] ) ;
    public FBXDeclarationNode declaration() // throws RecognitionException [1]
    {
        FBXDeclarationNode dec = null;

        IToken             id   = null;
        FBXDeclarationNode dec1 = null;

        FBXDeclarationNode dec2 = null;


        try
        {
            // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:61:2: (id= ID COLON (dec1= list[id.Text] | dec2= objectDeclaration[id.Text] ) )
            // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:61:4: id= ID COLON (dec1= list[id.Text] | dec2= objectDeclaration[id.Text] )
            {
                id = (IToken)Match(input, ID, FOLLOW_ID_in_declaration401);
                Match(input, COLON, FOLLOW_COLON_in_declaration403);
                // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:62:3: (dec1= list[id.Text] | dec2= objectDeclaration[id.Text] )
                int alt2 = 2;
                switch (input.LA(1))
                {
                case NUMBER:
                {
                    int LA2_1 = input.LA(2);

                    if ((LA2_1 == EOF || LA2_1 == COMMA || LA2_1 == RCURLY || LA2_1 == ID))
                    {
                        alt2 = 1;
                    }
                    else if ((LA2_1 == LCURLY))
                    {
                        alt2 = 2;
                    }
                    else
                    {
                        NoViableAltException nvae_d2s1 =
                            new NoViableAltException("", 2, 1, input);

                        throw nvae_d2s1;
                    }
                }
                break;

                case STRING:
                {
                    switch (input.LA(2))
                    {
                    case COMMA:
                    {
                        int LA2_5 = input.LA(3);

                        if ((LA2_5 == STRING))
                        {
                            int LA2_6 = input.LA(4);

                            if ((LA2_6 == EOF || LA2_6 == COMMA || LA2_6 == RCURLY || LA2_6 == ID))
                            {
                                alt2 = 1;
                            }
                            else if ((LA2_6 == LCURLY))
                            {
                                alt2 = 2;
                            }
                            else
                            {
                                NoViableAltException nvae_d2s6 =
                                    new NoViableAltException("", 2, 6, input);

                                throw nvae_d2s6;
                            }
                        }
                        else if ((LA2_5 == NUMBER || LA2_5 == ID))
                        {
                            alt2 = 1;
                        }
                        else
                        {
                            NoViableAltException nvae_d2s5 =
                                new NoViableAltException("", 2, 5, input);

                            throw nvae_d2s5;
                        }
                    }
                    break;

                    case EOF:
                    case RCURLY:
                    case ID:
                    {
                        alt2 = 1;
                    }
                    break;

                    case LCURLY:
                    {
                        alt2 = 2;
                    }
                    break;

                    default:
                        NoViableAltException nvae_d2s2 =
                            new NoViableAltException("", 2, 2, input);

                        throw nvae_d2s2;
                    }
                }
                break;

                case ID:
                {
                    alt2 = 1;
                }
                break;

                case LCURLY:
                {
                    alt2 = 2;
                }
                break;

                default:
                    NoViableAltException nvae_d2s0 =
                        new NoViableAltException("", 2, 0, input);

                    throw nvae_d2s0;
                }

                switch (alt2)
                {
                case 1:
                    // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:63:4: dec1= list[id.Text]
                {
                    PushFollow(FOLLOW_list_in_declaration415);
                    dec1 = list(id.Text);
                    state.followingStackPointer--;

                    dec = dec1;
                }
                break;

                case 2:
                    // E:\\DEVELOP\\Visual Studio Projects\\Vsual Studio 2010\\GameEngineSlimDX\\GEngine\\ResourcesManagers\\FBXParser\\fbx.g:64:4: dec2= objectDeclaration[id.Text]
                {
                    PushFollow(FOLLOW_objectDeclaration_in_declaration427);
                    dec2 = objectDeclaration(id.Text);
                    state.followingStackPointer--;

                    dec = dec2;
                }
                break;
                }
            }
        }
        catch (RecognitionException re)
        {
            ReportError(re);
            Recover(input, re);
        }
        finally
        {
        }
        return(dec);
    }