コード例 #1
0
        public void propertyType(ArrayList list, Token identifier)
        {
            Token id = null;
            Object body = null;
            Token body2 = null;
            bool bval = false;
            LiteralConstraint vc;
            BoundConstraint bc;
            OrLiteralConstraint orc;
            AndLiteralConstraint andc;
            ArrayList andor = new ArrayList();
            MultiValue mv = null;
            if (mcc_2_26(2147483647))
            {
                predicateFunc(list, identifier);
            }
            else if (mcc_2_27(2147483647))
            {
                body2 = mcc_consume_token(BIND4);
                if (body2 != null)
                {
                    bc = new BoundConstraint();
                    bc.Name = identifier.image;
                    bc.Value = body2.image.Substring(2);
                    bc.IsMultislot = true;
                    list.Add(bc);
                }
            }
            else if (mcc_2_28(2147483647))
            {
                body2 = mcc_consume_token(BIND);
                if (body2 != null)
                {
                    bc = new BoundConstraint();
                    bc.Name = identifier.image;
                    bc.Value = body2.image.Substring(1);
                    list.Add(bc);
                }
            }
            else if (mcc_2_29(2147483647))
            {
                mcc_consume_token(TILDA);
                body2 = mcc_consume_token(BIND);
                if (body2 != null)
                {
                    bc = new BoundConstraint();
                    bc.Name = identifier.image;
                    bc.Value = body2.image.Substring(1);
                    bc.Negated = true;
                    list.Add(bc);
                }
            }
            else if (mcc_2_30(2147483647))
            {
                body = typeExpr();
                while (true)
                {
                    mcc_consume_token(OR2);
                    orType(andor);
                    switch ((mcc_ntk == -1) ? mcc_mntk() : mcc_ntk)
                    {
                        case OR2:
                            ;
                            break;
                        default:
                            mcc_la1[51] = mcc_gen;
                            goto label_25;
                    }
                }
                label_25:
                ;

                if (body != null)
                {
                    orc = new OrLiteralConstraint();
                    orc.Name = identifier.image;
                    mv = new MultiValue(body);
                    orc.addValue(mv);
                    orc.addValues(andor);
                    list.Add(orc);
                }
            }
            else if (mcc_2_31(2147483647))
            {
                mcc_consume_token(TILDA);
                body = typeExpr();
                while (true)
                {
                    mcc_consume_token(OR2);
                    orType(andor);
                    switch ((mcc_ntk == -1) ? mcc_mntk() : mcc_ntk)
                    {
                        case OR2:
                            ;
                            break;
                        default:
                            mcc_la1[52] = mcc_gen;
                            goto label_26;
                    }
                }
                label_26:
                ;

                if (body != null)
                {
                    orc = new OrLiteralConstraint();
                    orc.Name = identifier.image;
                    mv = new MultiValue(body);
                    mv.Negated = true;
                    orc.addValue(mv);
                    orc.addValues(andor);
                    list.Add(orc);
                }
            }
            else if (mcc_2_32(2147483647))
            {
                body = bindTypeExpr();
                while (true)
                {
                    mcc_consume_token(AND2);
                    andType(andor);
                    switch ((mcc_ntk == -1) ? mcc_mntk() : mcc_ntk)
                    {
                        case AND2:
                            ;
                            break;
                        default:
                            mcc_la1[53] = mcc_gen;
                            goto label_27;
                    }
                }
                label_27:
                ;

                if (body != null)
                {
                    if (body is String && ((String) body).StartsWith("?"))
                    {
                        bc = new BoundConstraint();
                        bc.Name = identifier.image;
                        bc.Value = ((String) body).Substring(1);
                        bc.IntraFactJoin = true;
                        bc.addIntrFactJoin(andor);
                        list.Add(bc);
                    }
                    else
                    {
                        andc = new AndLiteralConstraint();
                        andc.Name = identifier.image;
                        mv = new MultiValue(body);
                        andc.addValue(mv);
                        andc.addValues(andor);
                        list.Add(andc);
                    }
                }
            }
            else if (mcc_2_33(2147483647))
            {
                mcc_consume_token(TILDA);
                body = typeExpr();
                while (true)
                {
                    mcc_consume_token(AND2);
                    andType(andor);
                    switch ((mcc_ntk == -1) ? mcc_mntk() : mcc_ntk)
                    {
                        case AND2:
                            ;
                            break;
                        default:
                            mcc_la1[54] = mcc_gen;
                            goto label_28;
                    }
                }
                label_28:
                ;

                if (body != null)
                {
                    andc = new AndLiteralConstraint();
                    andc.Name = identifier.image;
                    mv = new MultiValue(body);
                    mv.Negated = true;
                    andc.addValue(mv);
                    andc.addValues(andor);
                    list.Add(andc);
                }
            }
            else if (mcc_2_34(2147483647))
            {
                mcc_consume_token(TILDA);
                body = typeExpr();
                if (body != null)
                {
                    vc = new LiteralConstraint();
                    vc.Name = identifier.image;
                    vc.Value = body;
                    vc.Negated = true;
                    list.Add(vc);
                }
            }
            else if (mcc_2_35(2147483647))
            {
                id = mcc_consume_token(IDENTIFIER);
                if (id != null)
                {
                    vc = new LiteralConstraint();
                    vc.Name = identifier.image;
                    vc.Value = id.image;
                    list.Add(vc);
                }
            }
            else if (mcc_2_36(2147483647))
            {
                mcc_consume_token(TILDA);
                id = mcc_consume_token(IDENTIFIER);
                if (id != null)
                {
                    vc = new LiteralConstraint();
                    vc.Name = identifier.image;
                    vc.Value = id.image;
                    vc.Negated = true;
                    list.Add(vc);
                }
            }
            else
            {
                switch ((mcc_ntk == -1) ? mcc_mntk() : mcc_ntk)
                {
                    case INTEGER_LITERAL:
                    case FLOATING_POINT_LITERAL:
                    case STRING_LITERAL:
                    case PATH_LITERAL:
                        body = typeExpr();
                        if (body != null)
                        {
                            vc = new LiteralConstraint();
                            vc.Name = identifier.image;
                            vc.Value = body;
                            list.Add(vc);
                        }
                        break;
                    case TRUE:
                    case TRUE2:
                    case FALSE:
                    case FALSE2:
                        bval = trueFalse();
                        vc = new LiteralConstraint();
                        vc.Name = identifier.image;
                        vc.Value = Convert.ToBoolean(bval);
                        list.Add(vc);
                        break;
                    default:
                        mcc_la1[55] = mcc_gen;
                        mcc_consume_token(-1);
                        throw new ParseException();
                }
            }
        }
コード例 #2
0
        public void propertyType(IList list, Token identifier)
        {
            Token id = null;
            Object body = null;
            Token body2 = null;
            bool bval = false;
            LiteralConstraint vc;
            BoundConstraint bc;
            OrLiteralConstraint orc;
            AndLiteralConstraint andc;
            //UPGRADE_TODO: Field java.util was not converted. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1095"'
            IList andor = new ArrayList();
            MultiValue mv = null;
            if (jj_2_26(2147483647))
            {
                predicateFunc(list, identifier);
            }
            else if (jj_2_27(2147483647))
            {
                body2 = jj_consume_token(CLIPSParserConstants_Fields.BIND4);
                if (body2 != null)
                {
                    bc = new BoundConstraint();
                    bc.Name = identifier.image;
                    bc.Value = body2.image.Substring(2);
                    bc.IsMultislot = true;
                    list.Add(bc);
                }
            }
            else if (jj_2_28(2147483647))
            {
                body2 = jj_consume_token(CLIPSParserConstants_Fields.BIND);
                if (body2 != null)
                {
                    bc = new BoundConstraint();
                    bc.Name = identifier.image;
                    bc.Value = body2.image.Substring(1);
                    list.Add(bc);
                }
            }
            else if (jj_2_29(2147483647))
            {
                jj_consume_token(CLIPSParserConstants_Fields.TILDA);
                body2 = jj_consume_token(CLIPSParserConstants_Fields.BIND);
                if (body2 != null)
                {
                    bc = new BoundConstraint();
                    bc.Name = identifier.image;
                    bc.Value = body2.image.Substring(1);
                    bc.Negated = true;
                    list.Add(bc);
                }
            }
            else if (jj_2_30(2147483647))
            {
                body = typeExpr();
                while (true)
                {
                    jj_consume_token(CLIPSParserConstants_Fields.OR2);
                    orType(andor);
                    switch ((jj_ntk_Renamed_Field == - 1) ? jj_ntk() : jj_ntk_Renamed_Field)
                    {
                        case CLIPSParserConstants_Fields.OR2:
                            ;
                            break;

                        default:
                            jj_la1[49] = 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_24_brk;
                    }
                }
                //UPGRADE_NOTE: Label 'label_24_brk' was added. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1011"'
                label_24_brk:
                ;

                if (body != null)
                {
                    orc = new OrLiteralConstraint();
                    orc.Name = identifier.image;
                    mv = new MultiValue(body);
                    orc.addValue(mv);
                    orc.addValues(andor);
                    list.Add(orc);
                }
            }
            else if (jj_2_31(2147483647))
            {
                jj_consume_token(CLIPSParserConstants_Fields.TILDA);
                body = typeExpr();
                while (true)
                {
                    jj_consume_token(CLIPSParserConstants_Fields.OR2);
                    orType(andor);
                    switch ((jj_ntk_Renamed_Field == - 1) ? jj_ntk() : jj_ntk_Renamed_Field)
                    {
                        case CLIPSParserConstants_Fields.OR2:
                            ;
                            break;

                        default:
                            jj_la1[50] = 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_25_brk;
                    }
                }
                //UPGRADE_NOTE: Label 'label_25_brk' was added. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1011"'
                label_25_brk:
                ;

                if (body != null)
                {
                    orc = new OrLiteralConstraint();
                    orc.Name = identifier.image;
                    mv = new MultiValue(body);
                    mv.Negated = true;
                    orc.addValue(mv);
                    orc.addValues(andor);
                    list.Add(orc);
                }
            }
            else if (jj_2_32(2147483647))
            {
                body = typeExpr();
                while (true)
                {
                    jj_consume_token(CLIPSParserConstants_Fields.AND2);
                    andType(andor);
                    switch ((jj_ntk_Renamed_Field == - 1) ? jj_ntk() : jj_ntk_Renamed_Field)
                    {
                        case CLIPSParserConstants_Fields.AND2:
                            ;
                            break;

                        default:
                            jj_la1[51] = 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_26_brk;
                    }
                }
                //UPGRADE_NOTE: Label 'label_26_brk' was added. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1011"'
                label_26_brk:
                ;

                if (body != null)
                {
                    andc = new AndLiteralConstraint();
                    andc.Name = identifier.image;
                    mv = new MultiValue(body);
                    andc.addValue(mv);
                    andc.addValues(andor);
                    list.Add(andc);
                }
            }
            else if (jj_2_33(2147483647))
            {
                jj_consume_token(CLIPSParserConstants_Fields.TILDA);
                body = typeExpr();
                while (true)
                {
                    jj_consume_token(CLIPSParserConstants_Fields.AND2);
                    andType(andor);
                    switch ((jj_ntk_Renamed_Field == - 1) ? jj_ntk() : jj_ntk_Renamed_Field)
                    {
                        case CLIPSParserConstants_Fields.AND2:
                            ;
                            break;

                        default:
                            jj_la1[52] = 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_27_brk;
                    }
                }
                //UPGRADE_NOTE: Label 'label_27_brk' was added. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1011"'
                label_27_brk:
                ;

                if (body != null)
                {
                    andc = new AndLiteralConstraint();
                    andc.Name = identifier.image;
                    mv = new MultiValue(body);
                    mv.Negated = true;
                    andc.addValue(mv);
                    andc.addValues(andor);
                    list.Add(andc);
                }
            }
            else if (jj_2_34(2147483647))
            {
                jj_consume_token(CLIPSParserConstants_Fields.TILDA);
                body = typeExpr();
                if (body != null)
                {
                    vc = new LiteralConstraint();
                    vc.Name = identifier.image;
                    vc.Value = body;
                    vc.Negated = true;
                    list.Add(vc);
                }
            }
            else if (jj_2_35(2147483647))
            {
                id = jj_consume_token(CLIPSParserConstants_Fields.IDENTIFIER);
                if (id != null)
                {
                    vc = new LiteralConstraint();
                    vc.Name = identifier.image;
                    vc.Value = id.image;
                    list.Add(vc);
                }
            }
            else if (jj_2_36(2147483647))
            {
                jj_consume_token(CLIPSParserConstants_Fields.TILDA);
                id = jj_consume_token(CLIPSParserConstants_Fields.IDENTIFIER);
                if (id != null)
                {
                    vc = new LiteralConstraint();
                    vc.Name = identifier.image;
                    vc.Value = id.image;
                    vc.Negated = true;
                    list.Add(vc);
                }
            }
            else
            {
                switch ((jj_ntk_Renamed_Field == - 1) ? jj_ntk() : jj_ntk_Renamed_Field)
                {
                    case CLIPSParserConstants_Fields.INTEGER_LITERAL:
                    case CLIPSParserConstants_Fields.FLOATING_POINT_LITERAL:
                    case CLIPSParserConstants_Fields.STRING_LITERAL:
                    case CLIPSParserConstants_Fields.PATH_LITERAL:
                        body = typeExpr();
                        if (body != null)
                        {
                            vc = new LiteralConstraint();
                            vc.Name = identifier.image;
                            vc.Value = body;
                            list.Add(vc);
                        }
                        break;

                    case CLIPSParserConstants_Fields.TRUE:
                    case CLIPSParserConstants_Fields.TRUE2:
                    case CLIPSParserConstants_Fields.FALSE:
                    case CLIPSParserConstants_Fields.FALSE2:
                        bval = trueFalse();
                        vc = new LiteralConstraint();
                        vc.Name = identifier.image;
                        vc.Value = bval;
                        list.Add(vc);
                        break;

                    default:
                        jj_la1[53] = jj_gen;
                        jj_consume_token(- 1);
                        throw new ParseException();
                }
            }
        }
コード例 #3
0
 /// <summary>
 /// method compiles OrLiteralConstraint into alpha nodes
 /// </summary>
 /// <param name="cnstr">The CNSTR.</param>
 /// <param name="templ">The templ.</param>
 /// <param name="rule">The rule.</param>
 /// <returns></returns>
 public virtual BaseAlpha2 compileConstraint(OrLiteralConstraint cnstr, ITemplate templ, Rule.IRule rule)
 {
     BaseAlpha2 current = null;
     if (templ.getSlot(cnstr.Name) != null)
     {
         Slot2 sl = new Slot2(cnstr.Name);
         sl.Id = templ.getColumnIndex(cnstr.Name);
         Object sval = cnstr.Value;
         sl.Value = sval;
         if (rule.RememberMatch)
         {
             current = new AlphaNodeOr(engine.nextNodeId());
         }
         else
         {
             current = new NoMemOr(engine.nextNodeId());
         }
         current.Slot = sl;
         current.incrementUseCount();
         // we increment the node use count when when create a new
         // AlphaNode for the LiteralConstraint
         templ.getSlot(sl.Id).incrementNodeCount();
     }
     return current;
 }