Example #1
0
 void Run()
 {
     Tape tape = new Tape();
     for (int pc = 0; pc < code.Length; ++pc)
     {
         switch (code[pc])
         {
         case '+':
             tape.Inc();
             break;
         case '-':
             tape.Dec();
             break;
         case '>':
             tape.Advance();
             break;
         case '<':
             tape.Devance();
             break;
         case '[':
             if (tape.Get() == 0) pc = bracket_map[pc];
             break;
         case ']':
             if (tape.Get() != 0) pc = bracket_map[pc];
             break;
         case '.':
             Console.Write((char)tape.Get());
             break;
         }
     }
 }
Example #2
0
File: bf.cs Project: 9il/benchmarks
 private void _run(List<Op> program, Tape tape)
 {
     foreach (Op op in program) {
         switch (op.op) {
             case OpT.INC: tape.Inc(op.v); break;
             case OpT.MOVE: tape.Move(op.v); break;
             case OpT.LOOP: while (tape.Get() != 0) _run(op.loop, tape); break;
             case OpT.PRINT: Console.Write((char)tape.Get()); break;
         }
     }
 }