예제 #1
0
        public override void Evaluate()
        {
            Expression e = new Expression(RegexMatch.Groups[1].Value, ParentContext);

            if (e.IsNull())
            {
                StdOut("NULL");
                State = ExecutionState.DONE;
            }
            else
            {
                StdOut(e.ToString());
                State = ExecutionState.DONE;
            }
        }
예제 #2
0
        public override void Evaluate()
        {
            Expression e = new Expression(RegexMatch.Groups[1].Value, ParentContext);
            Expression ex = new Expression(RegexMatch.Groups[2].Value, ParentContext);
            Expression ey = new Expression(RegexMatch.Groups[3].Value, ParentContext);

            if (e.IsNull()) throw new kOSException("Null value in print statement");

            int x, y;

            if (Int32.TryParse(ex.GetValue().ToString(), out x) && Int32.TryParse(ey.GetValue().ToString(), out y))
            {
                Put(e.GetValue().ToString(), x, y);
            }
            else
            {
                throw new kOSException("Non-numeric value assigned to numeric function");
            }

            State = ExecutionState.DONE;
        }
예제 #3
0
파일: CommandBasicIO.cs 프로젝트: BGog/KOS
        public override void Evaluate()
        {
            Expression e  = new Expression(RegexMatch.Groups[1].Value, ParentContext);
            Expression ex = new Expression(RegexMatch.Groups[2].Value, ParentContext);
            Expression ey = new Expression(RegexMatch.Groups[3].Value, ParentContext);

            if (e.IsNull())
            {
                throw new kOSException("Null value in print statement");
            }

            int x, y;

            if (Int32.TryParse(ex.GetValue().ToString(), out x) && Int32.TryParse(ey.GetValue().ToString(), out y))
            {
                Put(e.GetValue().ToString(), x, y);
            }
            else
            {
                throw new kOSException("Non-numeric value assigned to numeric function");
            }

            State = ExecutionState.DONE;
        }
예제 #4
0
파일: CommandFileIO.cs 프로젝트: BGog/KOS
        public override void Evaluate()
        {
            // For now only log to the archive.
            String volumeName = "Archive";
            Volume targetVolume = GetVolume(volumeName);

            // If the archive is out of ranch, the signal is lost in space.
            if (!targetVolume.CheckRange())
            {
                State = ExecutionState.DONE;
                return;
            }

            String targetFile = RegexMatch.Groups[1].Value.Trim();
            Expression e = new Expression(RegexMatch.Groups[2].Value, ParentContext);

            if (e.IsNull())
            {
                State = ExecutionState.DONE;
            }
            else
            {
                targetVolume.AppendToName(targetFile, e.ToString());
                State = ExecutionState.DONE;
            }
        }
예제 #5
0
        public override void Evaluate()
        {
            // Todo: let the user specify a volume "LOG something TO file ON volume"
            Volume targetVolume = SelectedVolume;

            // If the archive is out of reach, the signal is lost in space.
            if (!targetVolume.CheckRange())
            {
                State = ExecutionState.DONE;
                return;
            }

            String targetFile = RegexMatch.Groups[2].Value.Trim();
            Expression e = new Expression(RegexMatch.Groups[1].Value, ParentContext);

            if (e.IsNull())
            {
                State = ExecutionState.DONE;
            }
            else
            {
                targetVolume.AppendToFile(targetFile, e.ToString());
                State = ExecutionState.DONE;
            }
        }