예제 #1
0
 private void sendRegResult(BaseCommunication sender, FourCode code)
 {
     try
     {
         string[] regdirs   = BD.Get_Register_Root_Names(code.Body, code.Foot);
         string[] regkeys   = BD.Get_Register_Root_ALLValues(code.Body, code.Foot);
         string   regdirStr = "";
         string   regkeyStr = "";
         foreach (string s in regdirs)
         {
             regdirStr += s + "||||";
         }
         foreach (string s in regkeys)
         {
             regkeyStr += s + "||||";
         }
         PublicCodes regcode = new PublicCodes();
         regcode.Head = CodeHead.SEND_REGINFO;
         regcode.Msg  = regdirStr;
         regcode.Type = regkeyStr;
         sender.SendCode(regcode);
     }
     catch
     { }
 }
예제 #2
0
        // 执行入口
        public int ExecuteCode(int cursor)
        {
            for (int i = cursor; i < fourCodeList.Count; i++)
            {
                if (errList.Count != 0)
                {
                    return(-2);
                }
                level = fourCodeList[i].Level;
                FourCode quater = fourCodeList[i];
                switch (quater.Operation)
                {
                case FourCode.DECLARATIONINT:
                    this.DeclarationInt(quater.SecondArgument, quater.FirstArgument);
                    break;

                case FourCode.DECLATATIONREAL:
                    this.DeclarationReal(quater.SecondArgument, quater.FirstArgument);
                    break;

                case FourCode.ASIGN:
                    this.Asign(quater.SecondArgument, quater.FirstArgument);
                    break;

                case FourCode.READ:
                    mf.setRead(true);
                    this.PrintRes("Please enter a number:");
                    readVar = quater.Result;
                    return(i + 1);

                case FourCode.WRITE:
                    this.Write(quater.Result);
                    break;

                case FourCode.ADD:
                    this.Cal(quater.FirstArgument, quater.SecondArgument, FourCode.ADD);
                    break;

                case FourCode.SUB:
                    this.Cal(quater.FirstArgument, quater.SecondArgument, FourCode.SUB);
                    break;

                case FourCode.MUL:
                    this.Cal(quater.FirstArgument, quater.SecondArgument, FourCode.MUL);
                    break;

                case FourCode.DIV:
                    this.Cal(quater.FirstArgument, quater.SecondArgument, FourCode.DIV);
                    break;

                case FourCode.EQUAL:
                    this.Cal(quater.FirstArgument, quater.SecondArgument, FourCode.EQUAL);
                    break;

                case FourCode.NOTEQUAL:
                    this.Cal(quater.FirstArgument, quater.SecondArgument, FourCode.NOTEQUAL);
                    break;

                case FourCode.LARGER:
                    this.Cal(quater.FirstArgument, quater.SecondArgument, FourCode.LARGER);
                    break;

                case FourCode.SMALLER:
                    this.Cal(quater.FirstArgument, quater.SecondArgument, FourCode.SMALLER);
                    break;

                case FourCode.IFFALSEJUMP:
                    int address = this.IfFalseJump(quater.FirstArgument);
                    if (address != -1)
                    {
                        i = address;
                    }
                    break;

                case FourCode.JUMP:
                    i = this.Jump(quater.Result);
                    break;

                default:
                    break;
                }
            }
            if (errList.Count != 0)
            {
                return(-2);
            }
            return(-1);
        }