public override void DoInstruction(ExpressionMediator exm, InstructionLine func, ProcessState state) { //int termnum = 0; //foreach (IOperandTerm term in ((ExpressionArrayArgument)func.Argument).TermList) //{ // string arg = term.GetStrValue(exm); // StringStream aSt = new StringStream(arg); // WordCollection wc = LexicalAnalyzer.Analyse(aSt, LexEndWith.EoL, false, false); // exm.VEvaluator.SetResultX((ExpressionParser.ReduceIntegerTerm(wc, TermEndWith.EoL).GetIntValue(exm)), termnum); // termnum++; //} //state.Return(exm.VEvaluator.RESULT); //if (state.ScriptEnd) // return; //int termnum = 0; StringStream aSt = new StringStream(((ExpressionArgument)func.Argument).Term.GetStrValue(exm)); List<long> termList = new List<long>(); while (!aSt.EOS) { WordCollection wc = LexicalAnalyzer.Analyse(aSt, LexEndWith.Comma, false, false); //exm.VEvaluator.SetResultX(ExpressionParser.ReduceIntegerTerm(wc, TermEndWith.EoL).GetIntValue(exm), termnum++); termList.Add(ExpressionParser.ReduceIntegerTerm(wc, TermEndWith.EoL).GetIntValue(exm)); aSt.ShiftNext(); LexicalAnalyzer.SkipHalfSpace(aSt); //termnum++; } if (termList.Count == 0) termList.Add(0); exm.VEvaluator.SetResultX(termList); state.Return(exm.VEvaluator.RESULT); if (state.ScriptEnd) return; }
public override void DoInstruction(ExpressionMediator exm, InstructionLine func, ProcessState state) { //int termnum = 0; ExpressionArrayArgument expArrayArg = (ExpressionArrayArgument)func.Argument; if (expArrayArg.TermList.Length == 0) { exm.VEvaluator.RESULT = 0; state.Return(0); return; } List<long> termList = new List<long>(); foreach (IOperandTerm term in expArrayArg.TermList) { termList.Add(term.GetIntValue(exm)); //exm.VEvaluator.SetResultX(term.GetIntValue(exm), termnum++); } if (termList.Count == 0) termList.Add(0); exm.VEvaluator.SetResultX(termList); state.Return(exm.VEvaluator.RESULT); }
public override void DoInstruction(ExpressionMediator exm, InstructionLine func, ProcessState state) { string keyword = func.Argument.ConstStr; if (Config.ICFunction)//1756 BEGINのキーワードは関数扱いらしい keyword = keyword.ToUpper(); state.SetBegin(keyword); state.Return(0); exm.Console.ResetStyle(); }