#include <stdio.h>
c[1<<20],t[10000],*s[99];main(int x,char**a){fread(c,1,1<<20,fopen(*++a,"r"));char*i=c,*p=t;for(a=s;x=*i++;x==62?p++:x==60?p--:x==43?++*p:x==45?--*p:x==46?putchar(*p):x==44?*p=getc(0):x==93?i=--*--a:x==91?*p?*a++=i:({for(x=1;*i=='['?x++:*i==']'?x--:x;i++);}):0);}
(admittedly this relies on GNU C extensions and smells of UB a little)