public final DirkExpParser.memberFunctionExpr_return memberFunctionExpr() throws RecognitionException {
        DirkExpParser.memberFunctionExpr_return retval = new DirkExpParser.memberFunctionExpr_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        DirkExpParser.fieldPropertyExpr_return fieldPropertyExpr38 = null;

        DirkExpParser.methodExpr_return methodExpr39 = null;



        try {
            // F:\\antlr\\BoncExp.g:89:5: ( fieldPropertyExpr | methodExpr )
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==IDENTIFIER) ) {
                int LA12_1 = input.LA(2);

                if ( (LA12_1==LPAREN) ) {
                    alt12=2;
                }
                else if ( ((LA12_1>=OR && LA12_1<=POWER)||LA12_1==RPAREN||LA12_1==COMMA) ) {
                    alt12=1;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 12, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 12, 0, input);

                throw nvae;
            }
            switch (alt12) {
                case 1 :
                    // F:\\antlr\\BoncExp.g:89:9: fieldPropertyExpr
                    {
                    root_0 = (CommonTree)adaptor.nil();

                    pushFollow(FOLLOW_fieldPropertyExpr_in_memberFunctionExpr680);
                    fieldPropertyExpr38=fieldPropertyExpr();

                    state._fsp--;

                    adaptor.addChild(root_0, fieldPropertyExpr38.getTree());

                    }
                    break;
                case 2 :
                    // F:\\antlr\\BoncExp.g:89:29: methodExpr
                    {
                    root_0 = (CommonTree)adaptor.nil();

                    pushFollow(FOLLOW_methodExpr_in_memberFunctionExpr684);
                    methodExpr39=methodExpr();

                    state._fsp--;

                    adaptor.addChild(root_0, methodExpr39.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);

            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }