Beispiel #1
0
        public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
        {
            DefaultReturnVector ret = new DefaultReturnVector();
            bool add = false;

            if (engine.findFunction(name) == null)
            {
                // first we Get the actual function from the shell function
                IFunction[]    functions  = new IFunction[this.functions.Count];
                IParameter[][] parameters = new IParameter[this.functions.Count][];
                for (int i = 0; i < functions.Length; ++i)
                {
                    ShellFunction sf = (ShellFunction)this.functions[i];
                    functions[i]  = engine.findFunction(sf.Name);
                    parameters[i] = sf.Parameters;
                }
                InterpretedFunction intrfunc = new InterpretedFunction(name, this.parameters, functions, parameters);
                intrfunc.configureFunction(engine);
                engine.declareFunction(intrfunc);
                add = true;
            }

            DefaultReturnValue rv = new DefaultReturnValue(Constants.BOOLEAN_OBJECT, add);

            ret.addReturnValue(rv);
            return(ret);
        }
Beispiel #2
0
        public Object basicExpr()
        {
            Object exp = null;
            Token obj = null;
            ShellFunction func = null;
            IParameter[] pms = null;
            ShellBoundParam sbp = null;
            switch ((jj_ntk_Renamed_Field == - 1) ? jj_ntk() : jj_ntk_Renamed_Field)
            {
                case CLIPSParserConstants_Fields.BIND:
                case CLIPSParserConstants_Fields.BIND3:
                case CLIPSParserConstants_Fields.BIND4:
                    obj = BindType;
                    func = new ShellFunction();
                    func.Name = "echo";
                    sbp = new ShellBoundParam();
                    sbp.DefglobalName = obj.image;
                    pms = new ShellBoundParam[] {sbp};
                    func.Parameters = pms;
                    {
                        if (true)
                            return func;
                    }
                    break;

                case CLIPSParserConstants_Fields.LBRACE:
                    jj_consume_token(CLIPSParserConstants_Fields.LBRACE);
                    exp = expr();
                    jj_consume_token(CLIPSParserConstants_Fields.RBRACE);
                    {
                        if (true)
                            return exp;
                    }
                    break;

                case 0:
                    jj_consume_token(0);
                    {
                        if (true)
                            return null;
                    }
                    break;

                default:
                    jj_la1[0] = jj_gen;
                    jj_consume_token(- 1);
                    throw new ParseException();
            }
            throw new ApplicationException("Missing return statement in function");
        }
Beispiel #3
0
        public Object basicExpr()
        {
            Object exp = null;
            Token obj = null;
            ShellFunction func = null;
            IParameter[] pms = null;
            ShellBoundParam sbp = null;

            int HACK = (mcc_ntk == -1) ? mcc_mntk() : mcc_ntk;

            switch (HACK)
            {
                case BIND:
                case BIND3:
                case BIND4:
                    obj = getBindType();
                    func = new ShellFunction();
                    func.Name = "echo";
                    sbp = new ShellBoundParam();
                    sbp.DefglobalName = obj.image;
                    pms = new ShellBoundParam[] {sbp};
                    func.setParameters(pms);
                    {
                        if (true)
                        {
                            return func;
                        }
                    }
                    break;
                case LBRACE:
                    mcc_consume_token(LBRACE);
                    exp = expr();
                    mcc_consume_token(RBRACE);
                    {
                        if (true)
                        {
                            return exp;
                        }
                    }
                    break;
                case 0:
                    mcc_consume_token(0);
                    {
                        if (true)
                        {
                            return null;
                        }
                    }
                    break;
                default:
                    mcc_la1[0] = mcc_gen;
                    mcc_consume_token(-1);
                    throw new ParseException();
            }
            throw new Exception("Missing return statement in function");
        }
Beispiel #4
0
        public Object expr()
        {
            Token exp = null;
            Token exp2 = null;
            Token exp3 = null;
            String body;
            ValueParam param;
            Deffact fact;
            Deftemplate templ;
            Defrule rule;
            ShellFunction func;
            DeffunctionFunction dffunc;
            ArrayList list = new ArrayList();
            ValueParam[] pms;
            IList infunc = new ArrayList();
            switch ((jj_ntk_Renamed_Field == - 1) ? jj_ntk() : jj_ntk_Renamed_Field)
            {
                case CLIPSParserConstants_Fields.ASSERT:
                    exp = jj_consume_token(CLIPSParserConstants_Fields.ASSERT);
                    jj_consume_token(CLIPSParserConstants_Fields.LBRACE);
                    exp2 = jj_consume_token(CLIPSParserConstants_Fields.IDENTIFIER);
                    while (true)
                    {
                        assertContents(list);
                        switch ((jj_ntk_Renamed_Field == - 1) ? jj_ntk() : jj_ntk_Renamed_Field)
                        {
                            case CLIPSParserConstants_Fields.LBRACE:
                                ;
                                break;

                            default:
                                jj_la1[3] = jj_gen;
                                //UPGRADE_NOTE: Labeled break statement was changed to a goto statement. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1012"'
                                goto label_2_brk;
                        }
                    }
                    //UPGRADE_NOTE: Label 'label_2_brk' was added. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1011"'
                    label_2_brk:
                    ;

                    jj_consume_token(CLIPSParserConstants_Fields.RBRACE);
                    func = new ShellFunction();
                    func.Name = exp.image;
                    pms = new ValueParam[2];
                    pms[0] = new ValueParam(Constants.STRING_TYPE, exp2.image);

                    object[] lst = new object[list.Count];
                    list.CopyTo(lst, 0);

                    pms[1] = new ValueParam(Constants.OBJECT_TYPE, lst);
                    func.setParameters(pms);
                    exp.clear();
                    exp = null;
                    {
                        if (true)
                            return func;
                    }
                    break;

                case CLIPSParserConstants_Fields.ASSERTTEMPORAL:
                    exp = jj_consume_token(CLIPSParserConstants_Fields.ASSERTTEMPORAL);
                    jj_consume_token(CLIPSParserConstants_Fields.LBRACE);
                    exp2 = jj_consume_token(CLIPSParserConstants_Fields.IDENTIFIER);
                    while (true)
                    {
                        assertContents(list);
                        switch ((jj_ntk_Renamed_Field == - 1) ? jj_ntk() : jj_ntk_Renamed_Field)
                        {
                            case CLIPSParserConstants_Fields.LBRACE:
                                ;
                                break;

                            default:
                                jj_la1[4] = jj_gen;
                                //UPGRADE_NOTE: Labeled break statement was changed to a goto statement. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1012"'
                                goto label_3_brk;
                        }
                    }
                    //UPGRADE_NOTE: Label 'label_3_brk' was added. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1011"'
                    label_3_brk:
                    ;

                    jj_consume_token(CLIPSParserConstants_Fields.RBRACE);
                    func = new ShellFunction();
                    func.Name = exp.image;
                    pms = new ValueParam[2];
                    pms[0] = new ValueParam(Constants.STRING_TYPE, exp2.image);

                    object[] lst1 = new object[list.Count];
                    list.CopyTo(lst1,0);
                    pms[1] = new ValueParam(Constants.OBJECT_TYPE, lst1);
                    func.setParameters(pms);
                    exp.clear();
                    exp = null;
                    {
                        if (true)
                            return func;
                    }
                    break;

                case CLIPSParserConstants_Fields.RETRACT:
                    exp = jj_consume_token(CLIPSParserConstants_Fields.RETRACT);
                    switch ((jj_ntk_Renamed_Field == - 1) ? jj_ntk() : jj_ntk_Renamed_Field)
                    {
                        case CLIPSParserConstants_Fields.BIND:
                            exp2 = jj_consume_token(CLIPSParserConstants_Fields.BIND);
                            break;

                        case CLIPSParserConstants_Fields.INTEGER_LITERAL:
                            exp2 = jj_consume_token(CLIPSParserConstants_Fields.INTEGER_LITERAL);
                            break;

                        default:
                            jj_la1[5] = jj_gen;
                            jj_consume_token(- 1);
                            throw new ParseException();
                    }
                    func = new ShellFunction();
                    func.Name = exp.image;
                    IParameter[] rpms = new IParameter[1];
                    if (exp2.image.StartsWith("?"))
                    {
                        BoundParam bp = new BoundParam();
                        bp.VariableName = exp2.image;
                        rpms[0] = bp;
                    }
                    else
                    {
                        ValueParam vp = new ValueParam(Constants.BIG_DECIMAL, Decimal.Parse(exp2.image));
                        rpms[0] = vp;
                    }
                    func.Parameters = rpms;
                    exp.clear();
                    exp = null;
                    exp2.clear();
                    exp2 = null;
                    {
                        if (true)
                            return func;
                    }
                    break;

                case CLIPSParserConstants_Fields.MODIFY:
                    exp = jj_consume_token(CLIPSParserConstants_Fields.MODIFY);
                    exp2 = jj_consume_token(CLIPSParserConstants_Fields.BIND);
                    assertContents(list);
                    func = new ShellFunction();
                    func.Name = exp.image;
                    BoundParam bp1 = new BoundParam();
                    bp1.VariableName = exp2.image;
                    list.Insert(0, bp1);
                    func.setParameters(ParameterUtils.slotToParameters(list));
                    exp.clear();
                    exp = null;
                    {
                        if (true)
                            return func;
                    }
                    break;

                case CLIPSParserConstants_Fields.DEFTEMPLATE:
                    exp = jj_consume_token(CLIPSParserConstants_Fields.DEFTEMPLATE);
                    templ = templateExpr();
                    func = new ShellFunction();
                    func.Name = exp.image;
                    pms = new ValueParam[1];
                    pms[0] = new ValueParam(Constants.OBJECT_TYPE, templ);
                    func.setParameters(pms);
                    {
                        if (true)
                            return func;
                    }
                    break;

                case CLIPSParserConstants_Fields.DEFMODULE:
                    exp = jj_consume_token(CLIPSParserConstants_Fields.DEFMODULE);
                    body = Identifier;
                    func = new ShellFunction();
                    func.Name = exp.image;
                    pms = new ValueParam[1];
                    pms[0] = new ValueParam(Constants.STRING_TYPE, body);
                    func.setParameters(pms);
                    {
                        if (true)
                            return func;
                    }
                    break;

                case CLIPSParserConstants_Fields.DEFRULE:
                    exp = jj_consume_token(CLIPSParserConstants_Fields.DEFRULE);
                    rule = ruleBody();
                    func = new ShellFunction();
                    func.Name = exp.image;
                    pms = new ValueParam[1];
                    pms[0] = new ValueParam(Constants.OBJECT_TYPE, rule);
                    func.setParameters(pms);
                    {
                        if (true)
                            return func;
                    }
                    break;

                case CLIPSParserConstants_Fields.DEFCLASS:
                    exp = jj_consume_token(CLIPSParserConstants_Fields.DEFCLASS);
                    switch ((jj_ntk_Renamed_Field == - 1) ? jj_ntk() : jj_ntk_Renamed_Field)
                    {
                        case CLIPSParserConstants_Fields.LBRACE:
                        case CLIPSParserConstants_Fields.INTEGER_LITERAL:
                        case CLIPSParserConstants_Fields.FLOATING_POINT_LITERAL:
                        case CLIPSParserConstants_Fields.STRING_LITERAL:
                        case CLIPSParserConstants_Fields.BIND:
                        case CLIPSParserConstants_Fields.BIND3:
                        case CLIPSParserConstants_Fields.BIND4:
                        case CLIPSParserConstants_Fields.TRUE:
                        case CLIPSParserConstants_Fields.TRUE2:
                        case CLIPSParserConstants_Fields.FALSE:
                        case CLIPSParserConstants_Fields.FALSE2:
                        case CLIPSParserConstants_Fields.IDENTIFIER:
                        case CLIPSParserConstants_Fields.PATH_LITERAL:
                            while (true)
                            {
                                valueParams(list);
                                switch ((jj_ntk_Renamed_Field == - 1) ? jj_ntk() : jj_ntk_Renamed_Field)
                                {
                                    case CLIPSParserConstants_Fields.LBRACE:
                                    case CLIPSParserConstants_Fields.INTEGER_LITERAL:
                                    case CLIPSParserConstants_Fields.FLOATING_POINT_LITERAL:
                                    case CLIPSParserConstants_Fields.STRING_LITERAL:
                                    case CLIPSParserConstants_Fields.BIND:
                                    case CLIPSParserConstants_Fields.BIND3:
                                    case CLIPSParserConstants_Fields.BIND4:
                                    case CLIPSParserConstants_Fields.TRUE:
                                    case CLIPSParserConstants_Fields.TRUE2:
                                    case CLIPSParserConstants_Fields.FALSE:
                                    case CLIPSParserConstants_Fields.FALSE2:
                                    case CLIPSParserConstants_Fields.IDENTIFIER:
                                    case CLIPSParserConstants_Fields.PATH_LITERAL:
                                        ;
                                        break;

                                    default:
                                        jj_la1[6] = jj_gen;
                                        //UPGRADE_NOTE: Labeled break statement was changed to a goto statement. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1012"'
                                        goto label_4_brk;
                                }
                            }
                            //UPGRADE_NOTE: Label 'label_4_brk' was added. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1011"'
                            label_4_brk:
                            ;

                            break;

                        default:
                            jj_la1[7] = jj_gen;
                            ;
                            break;
                    }
                    func = new ShellFunction();
                    func.Name = exp.image;
                    func.setParameters(ParameterUtils.convertParameters(list));
                    list.Clear();
                    {
                        if (true)
                            return func;
                    }
                    break;

                case CLIPSParserConstants_Fields.DEFFUNCTION:
                    exp = jj_consume_token(CLIPSParserConstants_Fields.DEFFUNCTION);
                    exp2 = jj_consume_token(CLIPSParserConstants_Fields.IDENTIFIER);
                    jj_consume_token(CLIPSParserConstants_Fields.LBRACE);
                    switch ((jj_ntk_Renamed_Field == - 1) ? jj_ntk() : jj_ntk_Renamed_Field)
                    {
                        case CLIPSParserConstants_Fields.BIND:
                        case CLIPSParserConstants_Fields.BIND3:
                        case CLIPSParserConstants_Fields.BIND4:
                            while (true)
                            {
                                bindingParams(list);
                                switch ((jj_ntk_Renamed_Field == - 1) ? jj_ntk() : jj_ntk_Renamed_Field)
                                {
                                    case CLIPSParserConstants_Fields.BIND:
                                    case CLIPSParserConstants_Fields.BIND3:
                                    case CLIPSParserConstants_Fields.BIND4:
                                        ;
                                        break;

                                    default:
                                        jj_la1[8] = jj_gen;
                                        //UPGRADE_NOTE: Labeled break statement was changed to a goto statement. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1012"'
                                        goto label_5_brk;
                                }
                            }
                            //UPGRADE_NOTE: Label 'label_5_brk' was added. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1011"'
                            label_5_brk:
                            ;

                            break;

                        default:
                            jj_la1[9] = jj_gen;
                            ;
                            break;
                    }
                    jj_consume_token(CLIPSParserConstants_Fields.RBRACE);
                    jj_consume_token(CLIPSParserConstants_Fields.LBRACE);
                    switch ((jj_ntk_Renamed_Field == - 1) ? jj_ntk() : jj_ntk_Renamed_Field)
                    {
                        case CLIPSParserConstants_Fields.BINDING:
                        case CLIPSParserConstants_Fields.ASSERT:
                        case CLIPSParserConstants_Fields.ASSERTTEMPORAL:
                        case CLIPSParserConstants_Fields.DEFCLASS:
                        case CLIPSParserConstants_Fields.DEFFUNCTION:
                        case CLIPSParserConstants_Fields.DEFMODULE:
                        case CLIPSParserConstants_Fields.DEFRULE:
                        case CLIPSParserConstants_Fields.DEFTEMPLATE:
                        case CLIPSParserConstants_Fields.MODIFY:
                        case CLIPSParserConstants_Fields.RETRACT:
                        case CLIPSParserConstants_Fields.PLUS:
                        case CLIPSParserConstants_Fields.MINUS:
                        case CLIPSParserConstants_Fields.MULTIPLY:
                        case CLIPSParserConstants_Fields.DIVIDE:
                        case CLIPSParserConstants_Fields.GT1:
                        case CLIPSParserConstants_Fields.GT2:
                        case CLIPSParserConstants_Fields.LT1:
                        case CLIPSParserConstants_Fields.LT2:
                        case CLIPSParserConstants_Fields.EQ1:
                        case CLIPSParserConstants_Fields.EQ2:
                        case CLIPSParserConstants_Fields.LE1:
                        case CLIPSParserConstants_Fields.LE2:
                        case CLIPSParserConstants_Fields.GE1:
                        case CLIPSParserConstants_Fields.GE2:
                        case CLIPSParserConstants_Fields.IDENTIFIER:
                            ruleAction(infunc);
                            break;

                        default:
                            jj_la1[10] = jj_gen;
                            ;
                            break;
                    }
                    jj_consume_token(CLIPSParserConstants_Fields.RBRACE);
                    dffunc = new DeffunctionFunction();
                    dffunc.Name = exp2.image;
                    dffunc.setParameters(ParameterUtils.convertParameters(list));
                    dffunc.setFunction(infunc);
                    list.Clear();
                    {
                        if (true)
                            return dffunc;
                    }
                    break;

                case CLIPSParserConstants_Fields.BINDING:
                    jj_consume_token(CLIPSParserConstants_Fields.BINDING);
                    exp = BindType;
                    while (true)
                    {
                        valueParams(list);
                        switch ((jj_ntk_Renamed_Field == - 1) ? jj_ntk() : jj_ntk_Renamed_Field)
                        {
                            case CLIPSParserConstants_Fields.LBRACE:
                            case CLIPSParserConstants_Fields.INTEGER_LITERAL:
                            case CLIPSParserConstants_Fields.FLOATING_POINT_LITERAL:
                            case CLIPSParserConstants_Fields.STRING_LITERAL:
                            case CLIPSParserConstants_Fields.BIND:
                            case CLIPSParserConstants_Fields.BIND3:
                            case CLIPSParserConstants_Fields.BIND4:
                            case CLIPSParserConstants_Fields.TRUE:
                            case CLIPSParserConstants_Fields.TRUE2:
                            case CLIPSParserConstants_Fields.FALSE:
                            case CLIPSParserConstants_Fields.FALSE2:
                            case CLIPSParserConstants_Fields.IDENTIFIER:
                            case CLIPSParserConstants_Fields.PATH_LITERAL:
                                ;
                                break;

                            default:
                                jj_la1[11] = jj_gen;
                                //UPGRADE_NOTE: Labeled break statement was changed to a goto statement. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1012"'
                                goto label_6_brk;
                        }
                    }
                    //UPGRADE_NOTE: Label 'label_6_brk' was added. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1011"'
                    label_6_brk:
                    ;

                    func = new ShellFunction();
                    func.Name = "bind";
                    list.Insert(0, new ValueParam(Constants.STRING_TYPE, exp.image.Substring(1)));
                    func.setParameters(ParameterUtils.convertParameters(list));
                    list.Clear();
                    {
                        if (true)
                            return func;
                    }
                    break;

                case CLIPSParserConstants_Fields.PLUS:
                case CLIPSParserConstants_Fields.MINUS:
                case CLIPSParserConstants_Fields.MULTIPLY:
                case CLIPSParserConstants_Fields.DIVIDE:
                case CLIPSParserConstants_Fields.GT1:
                case CLIPSParserConstants_Fields.GT2:
                case CLIPSParserConstants_Fields.LT1:
                case CLIPSParserConstants_Fields.LT2:
                case CLIPSParserConstants_Fields.EQ1:
                case CLIPSParserConstants_Fields.EQ2:
                case CLIPSParserConstants_Fields.LE1:
                case CLIPSParserConstants_Fields.LE2:
                case CLIPSParserConstants_Fields.GE1:
                case CLIPSParserConstants_Fields.GE2:
                    switch ((jj_ntk_Renamed_Field == - 1) ? jj_ntk() : jj_ntk_Renamed_Field)
                    {
                        case CLIPSParserConstants_Fields.PLUS:
                            exp = jj_consume_token(CLIPSParserConstants_Fields.PLUS);
                            break;

                        case CLIPSParserConstants_Fields.MINUS:
                            exp = jj_consume_token(CLIPSParserConstants_Fields.MINUS);
                            break;

                        case CLIPSParserConstants_Fields.MULTIPLY:
                            exp = jj_consume_token(CLIPSParserConstants_Fields.MULTIPLY);
                            break;

                        case CLIPSParserConstants_Fields.DIVIDE:
                            exp = jj_consume_token(CLIPSParserConstants_Fields.DIVIDE);
                            break;

                        case CLIPSParserConstants_Fields.GT1:
                            exp = jj_consume_token(CLIPSParserConstants_Fields.GT1);
                            break;

                        case CLIPSParserConstants_Fields.GT2:
                            exp = jj_consume_token(CLIPSParserConstants_Fields.GT2);
                            break;

                        case CLIPSParserConstants_Fields.LT1:
                            exp = jj_consume_token(CLIPSParserConstants_Fields.LT1);
                            break;

                        case CLIPSParserConstants_Fields.LT2:
                            exp = jj_consume_token(CLIPSParserConstants_Fields.LT2);
                            break;

                        case CLIPSParserConstants_Fields.EQ1:
                            exp = jj_consume_token(CLIPSParserConstants_Fields.EQ1);
                            break;

                        case CLIPSParserConstants_Fields.EQ2:
                            exp = jj_consume_token(CLIPSParserConstants_Fields.EQ2);
                            break;

                        case CLIPSParserConstants_Fields.LE1:
                            exp = jj_consume_token(CLIPSParserConstants_Fields.LE1);
                            break;

                        case CLIPSParserConstants_Fields.LE2:
                            exp = jj_consume_token(CLIPSParserConstants_Fields.LE2);
                            break;

                        case CLIPSParserConstants_Fields.GE1:
                            exp = jj_consume_token(CLIPSParserConstants_Fields.GE1);
                            break;

                        case CLIPSParserConstants_Fields.GE2:
                            exp = jj_consume_token(CLIPSParserConstants_Fields.GE2);
                            break;

                        default:
                            jj_la1[12] = jj_gen;
                            jj_consume_token(- 1);
                            throw new ParseException();
                    }
                    while (true)
                    {
                        valueParams(list);
                        switch ((jj_ntk_Renamed_Field == - 1) ? jj_ntk() : jj_ntk_Renamed_Field)
                        {
                            case CLIPSParserConstants_Fields.LBRACE:
                            case CLIPSParserConstants_Fields.INTEGER_LITERAL:
                            case CLIPSParserConstants_Fields.FLOATING_POINT_LITERAL:
                            case CLIPSParserConstants_Fields.STRING_LITERAL:
                            case CLIPSParserConstants_Fields.BIND:
                            case CLIPSParserConstants_Fields.BIND3:
                            case CLIPSParserConstants_Fields.BIND4:
                            case CLIPSParserConstants_Fields.TRUE:
                            case CLIPSParserConstants_Fields.TRUE2:
                            case CLIPSParserConstants_Fields.FALSE:
                            case CLIPSParserConstants_Fields.FALSE2:
                            case CLIPSParserConstants_Fields.IDENTIFIER:
                            case CLIPSParserConstants_Fields.PATH_LITERAL:
                                ;
                                break;

                            default:
                                jj_la1[13] = jj_gen;
                                //UPGRADE_NOTE: Labeled break statement was changed to a goto statement. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1012"'
                                goto label_7_brk;
                        }
                    }
                    //UPGRADE_NOTE: Label 'label_7_brk' was added. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1011"'
                    label_7_brk:
                    ;

                    func = new ShellFunction();
                    func.Name = exp.image;
                    func.setParameters(ParameterUtils.convertParameters(list));
                    list.Clear();
                    {
                        if (true)
                            return func;
                    }
                    break;

                case CLIPSParserConstants_Fields.IDENTIFIER:
                    exp = jj_consume_token(CLIPSParserConstants_Fields.IDENTIFIER);
                    switch ((jj_ntk_Renamed_Field == - 1) ? jj_ntk() : jj_ntk_Renamed_Field)
                    {
                        case CLIPSParserConstants_Fields.LBRACE:
                        case CLIPSParserConstants_Fields.INTEGER_LITERAL:
                        case CLIPSParserConstants_Fields.FLOATING_POINT_LITERAL:
                        case CLIPSParserConstants_Fields.STRING_LITERAL:
                        case CLIPSParserConstants_Fields.BIND:
                        case CLIPSParserConstants_Fields.BIND3:
                        case CLIPSParserConstants_Fields.BIND4:
                        case CLIPSParserConstants_Fields.TRUE:
                        case CLIPSParserConstants_Fields.TRUE2:
                        case CLIPSParserConstants_Fields.FALSE:
                        case CLIPSParserConstants_Fields.FALSE2:
                        case CLIPSParserConstants_Fields.IDENTIFIER:
                        case CLIPSParserConstants_Fields.PATH_LITERAL:
                            while (true)
                            {
                                valueParams(list);
                                switch ((jj_ntk_Renamed_Field == - 1) ? jj_ntk() : jj_ntk_Renamed_Field)
                                {
                                    case CLIPSParserConstants_Fields.LBRACE:
                                    case CLIPSParserConstants_Fields.INTEGER_LITERAL:
                                    case CLIPSParserConstants_Fields.FLOATING_POINT_LITERAL:
                                    case CLIPSParserConstants_Fields.STRING_LITERAL:
                                    case CLIPSParserConstants_Fields.BIND:
                                    case CLIPSParserConstants_Fields.BIND3:
                                    case CLIPSParserConstants_Fields.BIND4:
                                    case CLIPSParserConstants_Fields.TRUE:
                                    case CLIPSParserConstants_Fields.TRUE2:
                                    case CLIPSParserConstants_Fields.FALSE:
                                    case CLIPSParserConstants_Fields.FALSE2:
                                    case CLIPSParserConstants_Fields.IDENTIFIER:
                                    case CLIPSParserConstants_Fields.PATH_LITERAL:
                                        ;
                                        break;

                                    default:
                                        jj_la1[14] = jj_gen;
                                        //UPGRADE_NOTE: Labeled break statement was changed to a goto statement. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1012"'
                                        goto label_8_brk;
                                }
                            }
                            //UPGRADE_NOTE: Label 'label_8_brk' was added. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1011"'
                            label_8_brk:
                            ;

                            break;

                        default:
                            jj_la1[15] = jj_gen;
                            ;
                            break;
                    }
                    func = new ShellFunction();
                    func.Name = exp.image;
                    func.setParameters(ParameterUtils.convertParameters(list));
                    list.Clear();
                    {
                        if (true)
                            return func;
                    }
                    break;

                default:
                    jj_la1[16] = jj_gen;
                    jj_consume_token(- 1);
                    throw new ParseException();
            }
            throw new ApplicationException("Missing return statement in function");
        }
Beispiel #5
0
        public Object expr()
        {
            Token exp = null;
            Token exp2 = null;
            Token exp3 = null;
            String body;
            ValueParam param;
            Deffact fact;
            Deftemplate templ;
            Defrule rule;
            ShellFunction func;
            DeffunctionFunction dffunc;
            ArrayList list = new ArrayList();
            ValueParam[] pms;
            ArrayList infunc = new ArrayList();
            switch ((mcc_ntk == -1) ? mcc_mntk() : mcc_ntk)
            {
                case ASSERT:
                    exp = mcc_consume_token(ASSERT);
                    mcc_consume_token(LBRACE);
                    exp2 = mcc_consume_token(IDENTIFIER);
                    while (true)
                    {
                        assertContents(list);
                        switch ((mcc_ntk == -1) ? mcc_mntk() : mcc_ntk)
                        {
                            case LBRACE:
                                ;
                                break;
                            default:
                                mcc_la1[3] = mcc_gen;
                                goto label_2;
                        }
                    }
                    label_2:
                    ;

                    mcc_consume_token(RBRACE);
                    func = new ShellFunction();
                    func.Name = exp.image;
                    pms = new ValueParam[2];
                    pms[0] = new ValueParam(Constants.STRING_TYPE, exp2.image);
                    pms[1] = new ValueParam(Constants.OBJECT_TYPE, list.ToArray());
                    func.setParameters(pms);
                    exp.Clear();
                    exp = null;
                    {
                        if (true) return func;
                    }
                    break;
                case ASSERTTEMPORAL:
                    exp = mcc_consume_token(ASSERTTEMPORAL);
                    mcc_consume_token(LBRACE);
                    exp2 = mcc_consume_token(IDENTIFIER);
                    while (true)
                    {
                        assertContents(list);
                        switch ((mcc_ntk == -1) ? mcc_mntk() : mcc_ntk)
                        {
                            case LBRACE:
                                ;
                                break;
                            default:
                                mcc_la1[4] = mcc_gen;
                                goto label_3;
                        }
                    }
                    label_3:
                    ;

                    mcc_consume_token(RBRACE);
                    func = new ShellFunction();
                    func.Name = exp.image;
                    pms = new ValueParam[2];
                    pms[0] = new ValueParam(Constants.STRING_TYPE, exp2.image);
                    pms[1] = new ValueParam(Constants.OBJECT_TYPE, list.ToArray());
                    func.setParameters(pms);
                    exp.Clear();
                    exp = null;
                    {
                        if (true) return func;
                    }
                    break;
                case RETRACT:
                    exp = mcc_consume_token(RETRACT);
                    switch ((mcc_ntk == -1) ? mcc_mntk() : mcc_ntk)
                    {
                        case BIND:
                            exp2 = mcc_consume_token(BIND);
                            break;
                        case INTEGER_LITERAL:
                            exp2 = mcc_consume_token(INTEGER_LITERAL);
                            break;
                        default:
                            mcc_la1[5] = mcc_gen;
                            mcc_consume_token(-1);
                            throw new ParseException();
                    }
                    func = new ShellFunction();
                    func.Name = exp.image;
                    IParameter[] rpms = new IParameter[1];
                    if (exp2.image.StartsWith("?"))
                    {
                        BoundParam bp1 = new BoundParam();
                        bp1.VariableName = exp2.image;
                        rpms[0] = bp1;
                    }
                    else
                    {
                        ValueParam vp = new ValueParam(Constants.BIG_DECIMAL, Convert.ToDecimal(exp2.image));
                        rpms[0] = vp;
                    }
                    func.setParameters(rpms);
                    exp.Clear();
                    exp = null;
                    exp2.Clear();
                    exp2 = null;
                    {
                        if (true) return func;
                    }
                    break;
                case MODIFY:
                    exp = mcc_consume_token(MODIFY);
                    exp2 = mcc_consume_token(BIND);
                    assertContents(list);
                    func = new ShellFunction();
                    func.Name = exp.image;
                    BoundParam bp = new BoundParam();
                    bp.VariableName = exp2.image;
                    list.Insert(0, bp);
                    func.setParameters(ParameterUtils.slotToParameters(list));
                    exp.Clear();
                    exp = null;
                    {
                        if (true) return func;
                    }
                    break;
                case DEFTEMPLATE:
                    exp = mcc_consume_token(DEFTEMPLATE);
                    templ = templateExpr();
                    func = new ShellFunction();
                    func.Name = exp.image;
                    pms = new ValueParam[1];
                    pms[0] = new ValueParam(Constants.OBJECT_TYPE, templ);
                    func.setParameters(pms);
                    {
                        if (true) return func;
                    }
                    break;
                case DEFMODULE:
                    exp = mcc_consume_token(DEFMODULE);
                    body = getIdentifier();
                    func = new ShellFunction();
                    func.Name = exp.image;
                    pms = new ValueParam[1];
                    pms[0] = new ValueParam(Constants.STRING_TYPE, body);
                    func.setParameters(pms);
                    {
                        if (true) return func;
                    }
                    break;
                case DEFRULE:
                    exp = mcc_consume_token(DEFRULE);
                    rule = ruleBody();
                    func = new ShellFunction();
                    func.Name = exp.image;
                    pms = new ValueParam[1];
                    pms[0] = new ValueParam(Constants.OBJECT_TYPE, rule);
                    func.setParameters(pms);
                    {
                        if (true) return func;
                    }
                    break;
                case DEFCLASS:
                    exp = mcc_consume_token(DEFCLASS);
                    switch ((mcc_ntk == -1) ? mcc_mntk() : mcc_ntk)
                    {
                        case LBRACE:
                        case INTEGER_LITERAL:
                        case FLOATING_POINT_LITERAL:
                        case STRING_LITERAL:
                        case BIND:
                        case BIND3:
                        case BIND4:
                        case TRUE:
                        case TRUE2:
                        case FALSE:
                        case FALSE2:
                        case IDENTIFIER:
                        case PATH_LITERAL:
                            while (true)
                            {
                                valueParams(list);
                                switch ((mcc_ntk == -1) ? mcc_mntk() : mcc_ntk)
                                {
                                    case LBRACE:
                                    case INTEGER_LITERAL:
                                    case FLOATING_POINT_LITERAL:
                                    case STRING_LITERAL:
                                    case BIND:
                                    case BIND3:
                                    case BIND4:
                                    case TRUE:
                                    case TRUE2:
                                    case FALSE:
                                    case FALSE2:
                                    case IDENTIFIER:
                                    case PATH_LITERAL:
                                        ;
                                        break;
                                    default:
                                        mcc_la1[6] = mcc_gen;
                                        goto label_4;
                                }
                            }
                            label_4:
                            ;

                            break;
                        default:
                            mcc_la1[7] = mcc_gen;
                            ;
                            break;
                    }
                    func = new ShellFunction();
                    func.Name = exp.image;
                    func.setParameters(ParameterUtils.convertParameters(list));
                    list.Clear();
                    {
                        if (true) return func;
                    }
                    break;
                case DEFFUNCTION:
                    exp = mcc_consume_token(DEFFUNCTION);
                    exp2 = mcc_consume_token(IDENTIFIER);
                    mcc_consume_token(LBRACE);
                    switch ((mcc_ntk == -1) ? mcc_mntk() : mcc_ntk)
                    {
                        case BIND:
                        case BIND3:
                        case BIND4:
                            while (true)
                            {
                                bindingParams(list);
                                switch ((mcc_ntk == -1) ? mcc_mntk() : mcc_ntk)
                                {
                                    case BIND:
                                    case BIND3:
                                    case BIND4:
                                        ;
                                        break;
                                    default:
                                        mcc_la1[8] = mcc_gen;
                                        goto label_5;
                                }
                            }
                            label_5:
                            ;

                            break;
                        default:
                            mcc_la1[9] = mcc_gen;
                            ;
                            break;
                    }
                    mcc_consume_token(RBRACE);
                    mcc_consume_token(LBRACE);
                    switch ((mcc_ntk == -1) ? mcc_mntk() : mcc_ntk)
                    {
                        case BINDING:
                        case ASSERT:
                        case ASSERTTEMPORAL:
                        case DEFCLASS:
                        case DEFFUNCTION:
                        case DEFMODULE:
                        case DEFRULE:
                        case DEFTEMPLATE:
                        case MODIFY:
                        case RETRACT:
                        case PLUS:
                        case MINUS:
                        case MULTIPLY:
                        case DIVIDE:
                        case GT1:
                        case GT2:
                        case LT1:
                        case LT2:
                        case EQ1:
                        case EQ2:
                        case LE1:
                        case LE2:
                        case GE1:
                        case GE2:
                        case IDENTIFIER:
                            ruleAction(infunc);
                            break;
                        default:
                            mcc_la1[10] = mcc_gen;
                            ;
                            break;
                    }
                    mcc_consume_token(RBRACE);
                    dffunc = new DeffunctionFunction();
                    dffunc.Name = exp2.image;
                    dffunc.setParameters(ParameterUtils.convertParameters(list));
                    dffunc.Function = (infunc);
                    list.Clear();
                    {
                        if (true) return dffunc;
                    }
                    break;
                case BINDING:
                    mcc_consume_token(BINDING);
                    exp = getBindType();
                    while (true)
                    {
                        valueParams(list);
                        switch ((mcc_ntk == -1) ? mcc_mntk() : mcc_ntk)
                        {
                            case LBRACE:
                            case INTEGER_LITERAL:
                            case FLOATING_POINT_LITERAL:
                            case STRING_LITERAL:
                            case BIND:
                            case BIND3:
                            case BIND4:
                            case TRUE:
                            case TRUE2:
                            case FALSE:
                            case FALSE2:
                            case IDENTIFIER:
                            case PATH_LITERAL:
                                ;
                                break;
                            default:
                                mcc_la1[11] = mcc_gen;
                                goto label_6;
                        }
                    }
                    label_6:
                    ;

                    func = new ShellFunction();
                    func.Name = "bind";
                    list.Insert(0, new ValueParam(Constants.STRING_TYPE, exp.image.Substring(1)));
                    func.setParameters(ParameterUtils.convertParameters(list));
                    list.Clear();
                    {
                        if (true) return func;
                    }
                    break;
                case PLUS:
                case MINUS:
                case MULTIPLY:
                case DIVIDE:
                case GT1:
                case GT2:
                case LT1:
                case LT2:
                case EQ1:
                case EQ2:
                case LE1:
                case LE2:
                case GE1:
                case GE2:
                    switch ((mcc_ntk == -1) ? mcc_mntk() : mcc_ntk)
                    {
                        case PLUS:
                            exp = mcc_consume_token(PLUS);
                            break;
                        case MINUS:
                            exp = mcc_consume_token(MINUS);
                            break;
                        case MULTIPLY:
                            exp = mcc_consume_token(MULTIPLY);
                            break;
                        case DIVIDE:
                            exp = mcc_consume_token(DIVIDE);
                            break;
                        case GT1:
                            exp = mcc_consume_token(GT1);
                            break;
                        case GT2:
                            exp = mcc_consume_token(GT2);
                            break;
                        case LT1:
                            exp = mcc_consume_token(LT1);
                            break;
                        case LT2:
                            exp = mcc_consume_token(LT2);
                            break;
                        case EQ1:
                            exp = mcc_consume_token(EQ1);
                            break;
                        case EQ2:
                            exp = mcc_consume_token(EQ2);
                            break;
                        case LE1:
                            exp = mcc_consume_token(LE1);
                            break;
                        case LE2:
                            exp = mcc_consume_token(LE2);
                            break;
                        case GE1:
                            exp = mcc_consume_token(GE1);
                            break;
                        case GE2:
                            exp = mcc_consume_token(GE2);
                            break;
                        default:
                            mcc_la1[12] = mcc_gen;
                            mcc_consume_token(-1);
                            throw new ParseException();
                    }
                    while (true)
                    {
                        valueParams(list);
                        switch ((mcc_ntk == -1) ? mcc_mntk() : mcc_ntk)
                        {
                            case LBRACE:
                            case INTEGER_LITERAL:
                            case FLOATING_POINT_LITERAL:
                            case STRING_LITERAL:
                            case BIND:
                            case BIND3:
                            case BIND4:
                            case TRUE:
                            case TRUE2:
                            case FALSE:
                            case FALSE2:
                            case IDENTIFIER:
                            case PATH_LITERAL:
                                ;
                                break;
                            default:
                                mcc_la1[13] = mcc_gen;
                                goto label_7;
                        }
                    }
                    label_7:
                    ;

                    func = new ShellFunction();
                    func.Name = exp.image;
                    func.setParameters(ParameterUtils.convertParameters(list));
                    list.Clear();
                    {
                        if (true) return func;
                    }
                    break;
                case IDENTIFIER:
                    exp = mcc_consume_token(IDENTIFIER);
                    switch ((mcc_ntk == -1) ? mcc_mntk() : mcc_ntk)
                    {
                        case LBRACE:
                        case INTEGER_LITERAL:
                        case FLOATING_POINT_LITERAL:
                        case STRING_LITERAL:
                        case BIND:
                        case BIND3:
                        case BIND4:
                        case TRUE:
                        case TRUE2:
                        case FALSE:
                        case FALSE2:
                        case IDENTIFIER:
                        case PATH_LITERAL:
                            while (true)
                            {
                                valueParams(list);
                                switch ((mcc_ntk == -1) ? mcc_mntk() : mcc_ntk)
                                {
                                    case LBRACE:
                                    case INTEGER_LITERAL:
                                    case FLOATING_POINT_LITERAL:
                                    case STRING_LITERAL:
                                    case BIND:
                                    case BIND3:
                                    case BIND4:
                                    case TRUE:
                                    case TRUE2:
                                    case FALSE:
                                    case FALSE2:
                                    case IDENTIFIER:
                                    case PATH_LITERAL:
                                        ;
                                        break;
                                    default:
                                        mcc_la1[14] = mcc_gen;
                                        goto label_8;
                                }
                            }
                            label_8:
                            ;

                            break;
                        default:
                            mcc_la1[15] = mcc_gen;
                            ;
                            break;
                    }
                    func = new ShellFunction();
                    func.Name = exp.image;
                    func.setParameters(ParameterUtils.convertParameters(list));
                    list.Clear();
                    {
                        if (true) return func;
                    }
                    break;
                default:
                    mcc_la1[16] = mcc_gen;
                    mcc_consume_token(-1);
                    throw new ParseException();
            }
            throw new Exception("Missing return statement in function");
        }