public void HandlePrint(StackStateMachine machine, Instruction instruction) { if (instruction.Args.Length > 0) { if (instruction.Args[0].ArgType == ArgType.ENUM) { if (instruction.Args[0].Value == "换行") { print(Environment.NewLine); } else { print(instruction.Args[0].Value); } } else { print(instruction.Args[0].Value); } } else { if (runtimeStack.Count < 1) { throw new ArgumentException(instruction.InstructionCode + " 需要 " + StackName + " 中有至少一个文本"); } print(peek()); } }
public void HandleGen(StackStateMachine machine, Instruction instruction) { if (instruction.Args.Length < 1) { throw new ArgumentException(instruction.InstructionCode + " 命令需要参数"); } generateHelper.InvokeGenerate(machine, instruction); }
public void HandlePop(StackStateMachine machine, Instruction instruction) { if (runtimeStack.Count < 1) { throw new InvalidOperationException(StackName + " 中是空的,删除失败"); } pop(); }
public void HandleGet(StackStateMachine machine, Instruction instruction) { if (instruction.Args.Length < 1) { throw new ArgumentException(instruction.InstructionCode + " 命令需要参数"); } push(get(instruction.Args[0].Value)); }
public void HandleClone(StackStateMachine machine, Instruction instruction) { if (runtimeStack.Count < 1) { throw new InvalidOperationException(instruction.InstructionCode + " 命令要求 " + StackName + " 中至少有一条文本"); } push(peek()); }
public void HandleRandom(StackStateMachine machine, Instruction instruction) { if (runtimeStack.Count < 1) { throw new InvalidOperationException(StackName + " 中是空的,不能随机选择"); } int chosen = InstructionUtils.Rnd().Next() % runtimeStack.Count(); push(runtimeStack[chosen]); }
public void InvokeGenerate(StackStateMachine machine, Instruction instruction) { if (InstructionCollection.ContainsKey(instruction.Args[0].Value)) { CommandHost host = InstructionCollection[instruction.Args[0].Value]; host.Invoke(machine, instruction); return; } throw new ArgumentException("不能生成 " + instruction.Args[0].Value); }
public void HandleJoin(StackStateMachine machine, Instruction instruction) { StringBuilder sb = new StringBuilder(); foreach (string s in runtimeStack) { sb.Append(s); } runtimeStack.Clear(); push(sb.ToString()); }
public void HandleDecode(StackStateMachine machine, Instruction instruction) { if (instruction.Args.Length < 1) { throw new ArgumentException(instruction.InstructionCode + " 命令需要参数"); } if (runtimeStack.Count < 1) { throw new InvalidOperationException(instruction.InstructionCode + " 命令需要 " + StackName + " 中至少有一条文本"); } decode(instruction.Args); }
public void HandleSwap(StackStateMachine machine, Instruction instruction) { if (runtimeStack.Count < 2) { throw new ArgumentException(instruction.InstructionCode + " 需要 " + StackName + " 中有至少两个文本"); } string bottom = pop(); string top = pop(); push(bottom); push(top); }
public void HandlePrintAs(StackStateMachine machine, Instruction instruction) { if (instruction.Args.Length < 1) { throw new ArgumentException(instruction.InstructionCode + " 命令需要1个参数"); } if (runtimeStack.Count < 1) { throw new ArgumentException(instruction.InstructionCode + " 需要 " + StackName + " 中有至少一个文本"); } print(instruction.Args[0].Value + "=" + peek() + "\r\n"); }
public void HandlePush(StackStateMachine machine, Instruction instruction) { if (instruction.Args.Length < 1) { throw new ArgumentException(instruction.InstructionCode + " 命令需要参数"); } if (instruction.Args[0].ArgType == ArgType.ENUM) { if (runtimeRegister.ContainsKey(instruction.Args[0].Value)) { HandleGet(machine, instruction); } } else { push(instruction.Args[0].Value); } }
public void HandleSet(StackStateMachine machine, Instruction instruction) { if (instruction.Args.Length < 1) { throw new ArgumentException(instruction.InstructionCode + " 命令需要1-2个参数"); } if (instruction.Args.Length >= 2) { set(instruction.Args[0].Value, instruction.Args[1].Value); } else { if (runtimeStack.Count < 1) { throw new InvalidOperationException(instruction.InstructionCode + " 命令在只使用一个参数时需要 " + StackName + " 中至少有一条文本"); } set(instruction.Args[0].Value, pop()); } }
void GenerateAwesomeWord(StackStateMachine machine, Instruction instruction) { }
void GenerateDirtyWord(StackStateMachine machine, Instruction instruction) { }
void GeneratePaymentPassword(StackStateMachine machine, Instruction instruction) { }
void GenerateBankCard(StackStateMachine machine, Instruction instruction) { }
void GenerateEmail(StackStateMachine machine, Instruction instruction) { }
void GenerateMobilePhone(StackStateMachine machine, Instruction instruction) { }
void GenerateTelephone(StackStateMachine machine, Instruction instruction) { }
void GenerateIDCardNumber(StackStateMachine machine, Instruction instruction) { }
void GenerateName(StackStateMachine machine, Instruction instruction) { }
void GenerateNaturePassword(StackStateMachine machine, Instruction instruction) { }
void GenerateTimeStamp(StackStateMachine machine, Instruction instruction) { machine.runtimeStack.Add(InstructionUtils.GetTimestamp().ToString()); }
void GeneratePassword(StackStateMachine machine, Instruction instruction) { machine.runtimeStack.Add(InstructionUtils.RandomPassword()); }
void GenerateQQ(StackStateMachine machine, Instruction instruction) { machine.runtimeStack.Add(InstructionUtils.RandomQQNumber()); }
public StackStateMachineEventArgs(StackStateMachine machine) { this.Machine = machine; }
public void HandleClear(StackStateMachine machine, Instruction instruction) { runtimeStack.Clear(); }