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; } }
private double ParseSubExpressionAsDouble(String input) { double val = 0; if (double.TryParse(input, out val)) { return val; } else { var expValue = new Expression(input, executionContext).GetValue(); if (expValue is double) { return (double)expValue; } else if (double.TryParse(expValue.ToString(), out val)) { return val; } else { throw new kOSException("Non-numeric parameter used on a numeric function"); } } }
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; } }
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; } }
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.ToString(), out x) && Int32.TryParse(ey.ToString(), out y)) { Put(e.ToString(), x, y); } else { throw new kOSException("Non-numeric value assigned to numeric function"); } State = ExecutionState.DONE; }