public final SymbolraetselASTNormalizer.num_return num() throws RecognitionException {
        SymbolraetselASTNormalizer.num_return retval = new SymbolraetselASTNormalizer.num_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        CommonTree _first_0 = null;
        CommonTree _last = null;

        CommonTree BLOCK7=null;
        CommonTree SYMBOL8=null;

        CommonTree BLOCK7_tree=null;
        CommonTree SYMBOL8_tree=null;

        try {
            // C:\\Users\\Florian\\Dropbox\\Git\\CI_WiSe2013-2014\\CI_Aufgabe4\\src\\symbolraetsel_AST_Solver\\grammar\\SymbolraetselASTNormalizer.g:27:5: ( ^( BLOCK ( SYMBOL )+ ) )
            // C:\\Users\\Florian\\Dropbox\\Git\\CI_WiSe2013-2014\\CI_Aufgabe4\\src\\symbolraetsel_AST_Solver\\grammar\\SymbolraetselASTNormalizer.g:27:7: ^( BLOCK ( SYMBOL )+ )
            {
            root_0 = (CommonTree)adaptor.nil();

            _last = (CommonTree)input.LT(1);
            {
            CommonTree _save_last_1 = _last;
            CommonTree _first_1 = null;
            CommonTree root_1 = (CommonTree)adaptor.nil();_last = (CommonTree)input.LT(1);
            BLOCK7=(CommonTree)match(input,BLOCK,FOLLOW_BLOCK_in_num174); 
            BLOCK7_tree = (CommonTree)adaptor.dupNode(BLOCK7);

            root_1 = (CommonTree)adaptor.becomeRoot(BLOCK7_tree, root_1);



            match(input, Token.DOWN, null); 
            // C:\\Users\\Florian\\Dropbox\\Git\\CI_WiSe2013-2014\\CI_Aufgabe4\\src\\symbolraetsel_AST_Solver\\grammar\\SymbolraetselASTNormalizer.g:27:15: ( SYMBOL )+
            int cnt3=0;
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==SYMBOL) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // C:\\Users\\Florian\\Dropbox\\Git\\CI_WiSe2013-2014\\CI_Aufgabe4\\src\\symbolraetsel_AST_Solver\\grammar\\SymbolraetselASTNormalizer.g:27:15: SYMBOL
            	    {
            	    _last = (CommonTree)input.LT(1);
            	    SYMBOL8=(CommonTree)match(input,SYMBOL,FOLLOW_SYMBOL_in_num176); 
            	    SYMBOL8_tree = (CommonTree)adaptor.dupNode(SYMBOL8);

            	    adaptor.addChild(root_1, SYMBOL8_tree);


            	    }
            	    break;

            	default :
            	    if ( cnt3 >= 1 ) break loop3;
                        EarlyExitException eee =
                            new EarlyExitException(3, input);
                        throw eee;
                }
                cnt3++;
            } while (true);


            match(input, Token.UP, null); adaptor.addChild(root_0, root_1);_last = _save_last_1;
            }


            }

            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return retval;
    }