Advertisement
Guest User

Untitled

a guest
Mar 29th, 2018
392
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace func.brainfuck
  6. {
  7. public class BrainfuckBasicCommands
  8. {
  9. public static void RegisterTo(IVirtualMachine vm, Func<int> read, Action<char> write)
  10. {
  11. char[] chars = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890".ToCharArray();
  12. vm.RegisterCommand('.', b => { write(Convert.ToChar(vm.Memory[vm.MemoryPointer])); });
  13. vm.RegisterCommand('+', b => { vm.Memory[vm.MemoryPointer]= (byte)((vm.Memory[vm.MemoryPointer]+1)%256); });
  14. vm.RegisterCommand('-', b => { vm.Memory[vm.MemoryPointer] = vm.Memory[vm.MemoryPointer] == 0 ? vm.Memory[vm.MemoryPointer] = 255
  15. : (byte)(vm.Memory[vm.MemoryPointer] - 1); });
  16. vm.RegisterCommand(',', b => { vm.Memory[vm.MemoryPointer] = (byte)read(); });
  17. vm.RegisterCommand('>', b => { vm.MemoryPointer = (vm.MemoryPointer + 1)%256; });
  18. vm.RegisterCommand('<', b => { vm.MemoryPointer = (vm.MemoryPointer +256 -1)%256; });
  19.  
  20. foreach (var char1 in chars)
  21. vm.RegisterCommand(char1, b => { vm.Memory[vm.MemoryPointer] = (byte)char1; });
  22. }
  23. }
  24. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement