quine
run
step
stop
-stopped, manual stop-
- note, if you want to match against a space - exactly then use \x20 : [^ \+ \- \[ \] \. > < , ] :NEXT_PHASE - place @ and OUTPUT: : ([ \+ \- \[ \] \. > < , ]+)$ :: $1 @ OUTPUT: :NEXT_PHASE - prefix program : ([ \+ \- \[ \] \. > < , ])([^_]|$) :: $1_$2 :NEXT_PHASE - place insruction ptr : ^([^_])_ :: $1; :NEXT_PHASE - ";;" -> advance program counter : ;;([ \+ \- \[ \] \. > < , ])_ :: $1; -- halt when at end of program : ;; :: HALTED - next cell : >; (?<space>[^@]*) @ (?<next>[01]*/) :: >_;;$<space>$<next>@ - next cell, new cell : >; (?<space>[^@]*) @ (?<next>[01]*) :: >_;;$<space>$<next>/@ - prev cell : <; (?<space>[^@]*?) (?<prev>[01]*/) @ :: <_;;$<space>@$<prev> - plus minus reduce : 01|10 - minus : -; (?<space>[^@]*) @ :: -_;;$<space>@0 - plus : \+; (?<space>[^@]*) @ :: +_;;$<space>@1 - loop entry, non zero : \[; (?<space>[^@]*) (?<notzero>@[01]) :: [k;;$<space>$<notzero> - loop end, non zero : \[k (?<body>[^k]*) \]; (?<space>[^@]*) (?<notzero>@[01]) :: [;$<body>]_$<space>$<notzero> - loop end, zero : \[k (?<body>[^k]*) \]; :: [_$<body>]_;; - output : \.; (?<space>[^@]*) @ (?<num>[01]*) (?<space2>[^]*$) :: ._;;$<space>@$<num>$<space2>,$<num> -- convert output numbers from unary into binary :NEXT_PHASE : [1]{128} :: B9 : [1]{64} :: B8 : [1]{32} :: B7 : [1]{16} :: B6 : [1]{8} :: B5 : [1]{4} :: B4 : [1]{2} :: B3 : [1]{1} :: B2 -- convert binary into second hex digit :NEXT_PHASE : B8B7B6 ::  : B8B7 ::  : B8B6 ::  : B8 ::  : B7B6 ::  : B7 ::  : B6 ::  -- convert binary into first hex digit :NEXT_PHASE : B5B4B3B2 :: f; : B5B4B3 :: e; : B5B4B2 :: d; : B5B4 :: c; : B5B3B2 :: b; : B5B3 :: a; : B5B2 :: 9; : B5 :: 8; : B4B3B2 :: 7; : B4B3 :: 6; : B4B2 :: 5; : B4[^;] :: 4; : B3B2 :: 3; : B3 :: 2; : B2 :: 1; :NEXT_PHASE : [ \+ \- \[ \] \. > < , _ ]
++++++++ [ >++++ [>++>+++>+++>+<<<<-] >+>+>->>+ [<] <- ] >>. H >---. E +++++++.. LL +++. O >>. <-. W <. O +++. R ------. L --------. D >>+. ! >++. \n
<script>