tutorial.k 678 B

1234567891011121314151617181920212223
  1. \d tut
  2. evl:{.[`k@.:;,x;"\n",]}
  3. hdr0:{(x$($z)/"[]"),y}
  4. hdr:hdr0[6].
  5. ply:{(*|x)=~#*x}{inp:2(|(&\~^"\n\r\t "?)_)/1:`
  6. $[(~#inp)~"\\"=*inp;`0:evl[inp];];(inp;"\\"=*inp)}/
  7. hdl:{n:z+*x;i:$[z;y;*|x]
  8. $[~"\\"~*y;
  9. z&"goto"~4#1_y;n:`I$*|" "\y;]
  10. (n;i;z+1)}
  11. nxt:{(2>*|:){(s;i;c):x;`1:$[~c;hdr i
  12. "::"~r:evl[*i];"";(2#" "),r,"\n"]
  13. hdl[(s;i);*ply@0 0;c]}/(x;y;0)}
  14. cmts:"/"=@'/1(*'&'~^:)\
  15. btch0:{((x+1)$"\n")/'(&|/1(-1_0,)\~cmts@y)_y}
  16. btch:btch0[6]
  17. run:{{(*|x)<#*x}{r:tut.nxt[*|x]@@/x;(*x;$[1=(*r)-*|x;*r;(*|+*x)?*r])}/(x;0)}
  18. \d .
  19. /$[#x;{tut.nxt[0N]'+1(+\~tut.cmts@)\tut.btch@0:x}'x;];
  20. $[#x;{tut.run@+1(+\~tut.cmts@)\tut.btch@0:x}'x;];