Redivider/Brainfuck Interpreter

Brainfuck interpreter written in Redivider by User:MizardX.

= Code = # # main: { program: /[^!]*/; /!/|"";    input: /[\S\s]*/; run("","",input)[program] } | "Invalid input". run(memleft,memright,input): { /[^[\]<>.,+-]*\+/; run(memleft,(realinc+/.*/)[memright],input) } | { /[^[\]<>.,+-]*-/; run(memleft,(realdec+/.*/)[memright],input) } | { /[^[\]<>.,+-]*.,+-]*>/;    h: (/\d+,/|"0,")[memright]; t: ({/\d+,/;/.*/}|"")[memright]; run(h+memleft,t,input) } | { /[^[\]<>.,+-]*\./;    itoa[(/\d+,/|"0,")[memright]] + run(memleft,memright,input) } | { /[^[\]<>.,+-]*,/;    t: ({/\d+,/;/.*/}|"")[memright]; read: atoi[(/./|"\0000")[input]]; rest: ({/./;/.*/}|"")[input]; run(memleft,read+","+t,rest) } | { /[^[\]<>.,+-]*\[/;    program: /.*/; loop: grabloop[program]; tail: skiploop[program]; (      { /0,/;         run(memleft,memright,input)[tail]       }     | run(memleft,memright,input)[loop + "[" + loop + "]" + tail]     )[memright] } | { /[^[\]<>.,+-]*\]/;    "## Error: unexpected ']' ##" } | { /[^[\]<>.,+-]*/; "" }. realinc: {/255\b/;"0,"}|inc+(/,/|","). inc: { prefix: /\d*(?=\d)/; { /9/;      inc[prefix] + "0" } | { digit: /\d/; prefix + inc1[digit] } } | "1". realdec: {/0\b|,|$/;"255"}|{/0*(?=\d)/;/.*/}[dec]. dec: {    prefix: /\d*(?=\d)/; {      digit: /0/; dec[prefix] + "9" }|{      digit: /\d/; prefix + dec1[digit] }  }|"". inc1: {/0/;"1"}|{/1/;"2"}|{/2/;"3"}|{/3/;"4"}|{/4/;"5"}|{/5/;"6"}|{/6/;"7"}|{/7/;"8"}|{/8/;"9"}|{/9/;"0"}|"". dec1: {/9/;"8"}|{/8/;"7"}|{/7/;"6"}|{/6/;"5"}|{/5/;"4"}|{/4/;"3"}|{/3/;"2"}|{/2/;"1"}|{/1/;"0"}|{/0/;"9"}|"". grabloop: /\[/ + grabloop + /\]/ + grabloop | /[^[\]]+/ + grabloop | "". skiploop: { grabloop; /\]/; /.*/ } | "". atoi: {/\000/; "0"} | {/\001/;  "1"} | {/\002/;  "2"} | {/\003/;  "3"} | {/\004/;  "4"} | {/\005/;  "5"} | {/\006/;  "6"} | {/\007/;  "7"} | {/\010/;  "8"} | {/\011/;  "9"} | {/\012/; "10"} | {/\013/; "11"} | {/\014/; "12"} | {/\015/; "13"} | {/\016/; "14"} | {/\017/; "15"} | {/\020/; "16"} | {/\021/; "17"} | {/\022/; "18"} | {/\023/; "19"} | {/\024/; "20"} | {/\025/; "21"} | {/\026/; "22"} | {/\027/; "23"} | {/\030/; "24"} | {/\031/; "25"} | {/\032/; "26"} | {/\033/; "27"} | {/\034/; "28"} | {/\035/; "29"} | {/\036/; "30"} | {/\037/; "31"} | {/\040/; "32"} | {/\041/; "33"} | {/\042/; "34"} | {/\043/; "35"} | {/\044/; "36"} | {/\045/; "37"} | {/\046/; "38"} | {/\047/; "39"} | {/\050/; "40"} | {/\051/; "41"} | {/\052/; "42"} | {/\053/; "43"} | {/\054/; "44"} | {/\055/; "45"} | {/\056/; "46"} | {/\057/; "47"} | {/\060/; "48"} | {/\061/; "49"} | {/\062/; "50"} | {/\063/; "51"} | {/\064/; "52"} | {/\065/; "53"} | {/\066/; "54"} | {/\067/; "55"} | {/\070/; "56"} | {/\071/; "57"} | {/\072/; "58"} | {/\073/; "59"} | {/\074/; "60"} | {/\075/; "61"} | {/\076/; "62"} | {/\077/; "63"} | {/\100/; "64"} | {/\101/; "65"} | {/\102/; "66"} | {/\103/; "67"} | {/\104/; "68"} | {/\105/; "69"} | {/\106/; "70"} | {/\107/; "71"} | {/\110/; "72"} | {/\111/; "73"} | {/\112/; "74"} | {/\113/; "75"} | {/\114/; "76"} | {/\115/; "77"} | {/\116/; "78"} | {/\117/; "79"} | {/\120/; "80"} | {/\121/; "81"} | {/\122/; "82"} | {/\123/; "83"} | {/\124/; "84"} | {/\125/; "85"} | {/\126/; "86"} | {/\127/; "87"} | {/\130/; "88"} | {/\131/; "89"} | {/\132/; "90"} | {/\133/; "91"} | {/\134/; "92"} | {/\135/; "93"} | {/\136/; "94"} | {/\137/; "95"} | {/\140/; "96"} | {/\141/; "97"} | {/\142/; "98"} | {/\143/; "99"} | {/\144/;"100"} | {/\145/;"101"} | {/\146/;"102"} | {/\147/;"103"} | {/\150/;"104"} | {/\151/;"105"} | {/\152/;"106"} | {/\153/;"107"} | {/\154/;"108"} | {/\155/;"109"} | {/\156/;"110"} | {/\157/;"111"} | {/\160/;"112"} | {/\161/;"113"} | {/\162/;"114"} | {/\163/;"115"} | {/\164/;"116"} | {/\165/;"117"} | {/\166/;"118"} | {/\167/;"119"} | {/\170/;"120"} | {/\171/;"121"} | {/\172/;"122"} | {/\173/;"123"} | {/\174/;"124"} | {/\175/;"125"} | {/\176/;"126"} | {/\177/;"127"} | {/\200/;"128"} | {/\201/;"129"} | {/\202/;"130"} | {/\203/;"131"} | {/\204/;"132"} | {/\205/;"133"} | {/\206/;"134"} | {/\207/;"135"} | {/\210/;"136"} | {/\211/;"137"} | {/\212/;"138"} | {/\213/;"139"} | {/\214/;"140"} | {/\215/;"141"} | {/\216/;"142"} | {/\217/;"143"} | {/\220/;"144"} | {/\221/;"145"} | {/\222/;"146"} | {/\223/;"147"} | {/\224/;"148"} | {/\225/;"149"} | {/\226/;"150"} | {/\227/;"151"} | {/\230/;"152"} | {/\231/;"153"} | {/\232/;"154"} | {/\233/;"155"} | {/\234/;"156"} | {/\235/;"157"} | {/\236/;"158"} | {/\237/;"159"} | {/\240/;"160"} | {/\241/;"161"} | {/\242/;"162"} | {/\243/;"163"} | {/\244/;"164"} | {/\245/;"165"} | {/\246/;"166"} | {/\247/;"167"} | {/\250/;"168"} | {/\251/;"169"} | {/\252/;"170"} | {/\253/;"171"} | {/\254/;"172"} | {/\255/;"173"} | {/\256/;"174"} | {/\257/;"175"} | {/\260/;"176"} | {/\261/;"177"} | {/\262/;"178"} | {/\263/;"179"} | {/\264/;"180"} | {/\265/;"181"} | {/\266/;"182"} | {/\267/;"183"} | {/\270/;"184"} | {/\271/;"185"} | {/\272/;"186"} | {/\273/;"187"} | {/\274/;"188"} | {/\275/;"189"} | {/\276/;"190"} | {/\277/;"191"} | {/\300/;"192"} | {/\301/;"193"} | {/\302/;"194"} | {/\303/;"195"} | {/\304/;"196"} | {/\305/;"197"} | {/\306/;"198"} | {/\307/;"199"} | {/\310/;"200"} | {/\311/;"201"} | {/\312/;"202"} | {/\313/;"203"} | {/\314/;"204"} | {/\315/;"205"} | {/\316/;"206"} | {/\317/;"207"} | {/\320/;"208"} | {/\321/;"209"} | {/\322/;"210"} | {/\323/;"211"} | {/\324/;"212"} | {/\325/;"213"} | {/\326/;"214"} | {/\327/;"215"} | {/\330/;"216"} | {/\331/;"217"} | {/\332/;"218"} | {/\333/;"219"} | {/\334/;"220"} | {/\335/;"221"} | {/\336/;"222"} | {/\337/;"223"} | {/\340/;"224"} | {/\341/;"225"} | {/\342/;"226"} | {/\343/;"227"} | {/\344/;"228"} | {/\345/;"229"} | {/\346/;"230"} | {/\347/;"231"} | {/\350/;"232"} | {/\351/;"233"} | {/\352/;"234"} | {/\353/;"235"} | {/\354/;"236"} | {/\355/;"237"} | {/\356/;"238"} | {/\357/;"239"} | {/\360/;"240"} | {/\361/;"241"} | {/\362/;"242"} | {/\363/;"243"} | {/\364/;"244"} | {/\365/;"245"} | {/\366/;"246"} | {/\367/;"247"} | {/\370/;"248"} | {/\371/;"249"} | {/\372/;"250"} | {/\373/;"251"} | {/\374/;"252"} | {/\375/;"253"} | {/\376/;"254"} | {/\377/;"255"}. itoa: { /0\b/;"\0000"} | {  /1\b/;"\0001"} | {  /2\b/;"\0002"} | {  /3\b/;"\0003"} | {  /4\b/;"\0004"} | { /5\b/;"\0005"} | {  /6\b/;"\0006"} | {  /7\b/;"\0007"} | {  /8\b/;"\0010"} | {  /9\b/;"\0011"} | { /10\b/;"\0012"} | { /11\b/;"\0013"} | { /12\b/;"\0014"} | { /13\b/;"\0015"} | { /14\b/;"\0016"} | { /15\b/;"\0017"} | { /16\b/;"\0020"} | { /17\b/;"\0021"} | { /18\b/;"\0022"} | { /19\b/;"\0023"} | { /20\b/;"\0024"} | { /21\b/;"\0025"} | { /22\b/;"\0026"} | { /23\b/;"\0027"} | { /24\b/;"\0030"} | { /25\b/;"\0031"} | { /26\b/;"\0032"} | { /27\b/;"\0033"} | { /28\b/;"\0034"} | { /29\b/;"\0035"} | { /30\b/;"\0036"} | { /31\b/;"\0037"} | { /32\b/;"\0040"} | { /33\b/;"\0041"} | { /34\b/;"\0042"} | { /35\b/;"\0043"} | { /36\b/;"\0044"} | { /37\b/;"\0045"} | { /38\b/;"\0046"} | { /39\b/;"\0047"} | { /40\b/;"\0050"} | { /41\b/;"\0051"} | { /42\b/;"\0052"} | { /43\b/;"\0053"} | { /44\b/;"\0054"} | { /45\b/;"\0055"} | { /46\b/;"\0056"} | { /47\b/;"\0057"} | { /48\b/;"\0060"} | { /49\b/;"\0061"} | { /50\b/;"\0062"} | { /51\b/;"\0063"} | { /52\b/;"\0064"} | { /53\b/;"\0065"} | { /54\b/;"\0066"} | { /55\b/;"\0067"} | { /56\b/;"\0070"} | { /57\b/;"\0071"} | { /58\b/;"\0072"} | { /59\b/;"\0073"} | { /60\b/;"\0074"} | { /61\b/;"\0075"} | { /62\b/;"\0076"} | { /63\b/;"\0077"} | { /64\b/;"\0100"} | { /65\b/;"\0101"} | { /66\b/;"\0102"} | { /67\b/;"\0103"} | { /68\b/;"\0104"} | { /69\b/;"\0105"} | { /70\b/;"\0106"} | { /71\b/;"\0107"} | { /72\b/;"\0110"} | { /73\b/;"\0111"} | { /74\b/;"\0112"} | { /75\b/;"\0113"} | { /76\b/;"\0114"} | { /77\b/;"\0115"} | { /78\b/;"\0116"} | { /79\b/;"\0117"} | { /80\b/;"\0120"} | { /81\b/;"\0121"} | { /82\b/;"\0122"} | { /83\b/;"\0123"} | { /84\b/;"\0124"} | { /85\b/;"\0125"} | { /86\b/;"\0126"} | { /87\b/;"\0127"} | { /88\b/;"\0130"} | { /89\b/;"\0131"} | { /90\b/;"\0132"} | { /91\b/;"\0133"} | { /92\b/;"\0134"} | { /93\b/;"\0135"} | { /94\b/;"\0136"} | { /95\b/;"\0137"} | { /96\b/;"\0140"} | { /97\b/;"\0141"} | { /98\b/;"\0142"} | { /99\b/;"\0143"} | {/100\b/;"\0144"} | {/101\b/;"\0145"} | {/102\b/;"\0146"} | {/103\b/;"\0147"} | {/104\b/;"\0150"} | {/105\b/;"\0151"} | {/106\b/;"\0152"} | {/107\b/;"\0153"} | {/108\b/;"\0154"} | {/109\b/;"\0155"} | {/110\b/;"\0156"} | {/111\b/;"\0157"} | {/112\b/;"\0160"} | {/113\b/;"\0161"} | {/114\b/;"\0162"} | {/115\b/;"\0163"} | {/116\b/;"\0164"} | {/117\b/;"\0165"} | {/118\b/;"\0166"} | {/119\b/;"\0167"} | {/120\b/;"\0170"} | {/121\b/;"\0171"} | {/122\b/;"\0172"} | {/123\b/;"\0173"} | {/124\b/;"\0174"} | {/125\b/;"\0175"} | {/126\b/;"\0176"} | {/127\b/;"\0177"} | {/128\b/;"\0200"} | {/129\b/;"\0201"} | {/130\b/;"\0202"} | {/131\b/;"\0203"} | {/132\b/;"\0204"} | {/133\b/;"\0205"} | {/134\b/;"\0206"} | {/135\b/;"\0207"} | {/136\b/;"\0210"} | {/137\b/;"\0211"} | {/138\b/;"\0212"} | {/139\b/;"\0213"} | {/140\b/;"\0214"} | {/141\b/;"\0215"} | {/142\b/;"\0216"} | {/143\b/;"\0217"} | {/144\b/;"\0220"} | {/145\b/;"\0221"} | {/146\b/;"\0222"} | {/147\b/;"\0223"} | {/148\b/;"\0224"} | {/149\b/;"\0225"} | {/150\b/;"\0226"} | {/151\b/;"\0227"} | {/152\b/;"\0230"} | {/153\b/;"\0231"} | {/154\b/;"\0232"} | {/155\b/;"\0233"} | {/156\b/;"\0234"} | {/157\b/;"\0235"} | {/158\b/;"\0236"} | {/159\b/;"\0237"} | {/160\b/;"\0240"} | {/161\b/;"\0241"} | {/162\b/;"\0242"} | {/163\b/;"\0243"} | {/164\b/;"\0244"} | {/165\b/;"\0245"} | {/166\b/;"\0246"} | {/167\b/;"\0247"} | {/168\b/;"\0250"} | {/169\b/;"\0251"} | {/170\b/;"\0252"} | {/171\b/;"\0253"} | {/172\b/;"\0254"} | {/173\b/;"\0255"} | {/174\b/;"\0256"} | {/175\b/;"\0257"} | {/176\b/;"\0260"} | {/177\b/;"\0261"} | {/178\b/;"\0262"} | {/179\b/;"\0263"} | {/180\b/;"\0264"} | {/181\b/;"\0265"} | {/182\b/;"\0266"} | {/183\b/;"\0267"} | {/184\b/;"\0270"} | {/185\b/;"\0271"} | {/186\b/;"\0272"} | {/187\b/;"\0273"} | {/188\b/;"\0274"} | {/189\b/;"\0275"} | {/190\b/;"\0276"} | {/191\b/;"\0277"} | {/192\b/;"\0300"} | {/193\b/;"\0301"} | {/194\b/;"\0302"} | {/195\b/;"\0303"} | {/196\b/;"\0304"} | {/197\b/;"\0305"} | {/198\b/;"\0306"} | {/199\b/;"\0307"} | {/200\b/;"\0310"} | {/201\b/;"\0311"} | {/202\b/;"\0312"} | {/203\b/;"\0313"} | {/204\b/;"\0314"} | {/205\b/;"\0315"} | {/206\b/;"\0316"} | {/207\b/;"\0317"} | {/208\b/;"\0320"} | {/209\b/;"\0321"} | {/210\b/;"\0322"} | {/211\b/;"\0323"} | {/212\b/;"\0324"} | {/213\b/;"\0325"} | {/214\b/;"\0326"} | {/215\b/;"\0327"} | {/216\b/;"\0330"} | {/217\b/;"\0331"} | {/218\b/;"\0332"} | {/219\b/;"\0333"} | {/220\b/;"\0334"} | {/221\b/;"\0335"} | {/222\b/;"\0336"} | {/223\b/;"\0337"} | {/224\b/;"\0340"} | {/225\b/;"\0341"} | {/226\b/;"\0342"} | {/227\b/;"\0343"} | {/228\b/;"\0344"} | {/229\b/;"\0345"} | {/230\b/;"\0346"} | {/231\b/;"\0347"} | {/232\b/;"\0350"} | {/233\b/;"\0351"} | {/234\b/;"\0352"} | {/235\b/;"\0353"} | {/236\b/;"\0354"} | {/237\b/;"\0355"} | {/238\b/;"\0356"} | {/239\b/;"\0357"} | {/240\b/;"\0360"} | {/241\b/;"\0361"} | {/242\b/;"\0362"} | {/243\b/;"\0363"} | {/244\b/;"\0364"} | {/245\b/;"\0365"} | {/246\b/;"\0366"} | {/247\b/;"\0367"} | {/248\b/;"\0370"} | {/249\b/;"\0371"} | {/250\b/;"\0372"} | {/251\b/;"\0373"} | {/252\b/;"\0374"} | {/253\b/;"\0375"} | {/254\b/;"\0376"} | {/255\b/;"\0377"}.
 * 1) Brainfuck interpreter, written in Redivider, by MizardX
 * 2) Version: 1.0
 * 1) The BF program and the input to the BF program is expected
 * 2) as input to this interpeter. They should be separated by
 * 3) a exclamation point ("!").
 * 1) More info about Redivider and Brainfuck:
 * 2) http://esoteric.voxelperfect.net/wiki/Redivider
 * 3) http://esoteric.voxelperfect.net/wiki/Brainfuck


 * This looks cool! Good work. --Keymaker 08:29, 16 November 2008 (UTC)