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 { } }
// 执行入口 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); }