Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace func.brainfuck
- {
- public class BrainfuckBasicCommands
- {
- public static void RegisterTo(IVirtualMachine vm, Func<int> read, Action<char> write)
- {
- char[] chars = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890".ToCharArray();
- vm.RegisterCommand('.', b => { write(Convert.ToChar(vm.Memory[vm.MemoryPointer])); });
- vm.RegisterCommand('+', b => { vm.Memory[vm.MemoryPointer]= (byte)((vm.Memory[vm.MemoryPointer]+1)%256); });
- vm.RegisterCommand('-', b => { vm.Memory[vm.MemoryPointer] = vm.Memory[vm.MemoryPointer] == 0 ? vm.Memory[vm.MemoryPointer] = 255
- : (byte)(vm.Memory[vm.MemoryPointer] - 1); });
- vm.RegisterCommand(',', b => { vm.Memory[vm.MemoryPointer] = (byte)read(); });
- vm.RegisterCommand('>', b => { vm.MemoryPointer = (vm.MemoryPointer + 1)%256; });
- vm.RegisterCommand('<', b => { vm.MemoryPointer = (vm.MemoryPointer +256 -1)%256; });
- foreach (var char1 in chars)
- vm.RegisterCommand(char1, b => { vm.Memory[vm.MemoryPointer] = (byte)char1; });
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement