Beispiel #1
0
 public IEnumerable<Position> Execute(BrainfuckEnv be)
 {
     foreach (var node in _nodes)
         foreach (var pos in node.Execute(be))
             yield return pos;
     yield return _posEnd;
 }
Beispiel #2
0
        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));
        }
Beispiel #3
0
 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;
     }
 }
Beispiel #4
0
 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;
     }
 }
Beispiel #5
0
 public abstract IEnumerable<Position> Execute(BrainfuckEnv be);