public IEnumerable<Position> Execute(BrainfuckEnv be) { foreach (var node in _nodes) foreach (var pos in node.Execute(be)) yield return pos; yield return _posEnd; }
public override ExecutionEnvironment Compile(string source, string input) { var inputQ = new Queue <BigInteger>(); switch (_settings.InputType) { case IOType.Numbers: try { inputQ.EnqueueRange(input.Split(',').Where(s => !string.IsNullOrWhiteSpace(s)).Select(s => BigInteger.Parse(s))); } catch (FormatException) { throw new Exception("Please provide the input as a comma-separated sequence of integers (or change the semantics in the Semantics menu)."); } break; case IOType.Characters: inputQ.EnqueueRange(input.Select(ch => (BigInteger)(int)ch)); break; default: throw new InvalidOperationException(); } return(BrainfuckEnv.GetEnvironment(_settings.CellType, source, inputQ, _settings.OutputType)); }
public override IEnumerable<Position> Execute(BrainfuckEnv be) { yield return _posStart; while (be.IsNonZero) { foreach (var inner in _inner) foreach (var pos in inner.Execute(be)) yield return pos; yield return _posEnd; } }
public override IEnumerable<Position> Execute(BrainfuckEnv be) { yield return _pos; switch (_char) { case '+': be.Inc(); break; case '-': be.Dec(); break; case '<': be.MoveLeft(); break; case '>': be.MoveRight(); break; case '.': be.BfOutput(); break; case ',': be.BfInput(); break; default: break; } }
public abstract IEnumerable<Position> Execute(BrainfuckEnv be);