# Converts a minidei+[] program into a minidei program. # Written by Elliott Hird, 2008. # Released into the public domain. $/ = undef; $_ = <>; my $q = qr/\[(?:(??{$q})|[^\[\]]+)*\]/; my $w = qr/([^ \[\]]+)/; my $e = qr/$w|($q)/; { s/\s+/ /g; s/^\s+|\s+$|\[\s+|\s+\]//g; print $_, "\n"; # s/\[$w((?: $w)+)\]/[$1] [$2] compose/ and redo; s/\[$w((?: $w)+)\]/[$1] [$2 compose/ and redo; s/\[\[($e+)\]\]/[$1] wrap/ and redo; s/\[wrap\]/dup wrap dei swap drop/ and redo; s/\[drop\]/dup drop dei/ and redo; s/\[dup\]/dup dei swap drop/ and redo; s/\[swap\]/dup swap dei swap drop/ and redo; s/\[i\]/wrap i dei/ and redo; s/\[compose\]/dup dup compose dei swap drop/ and redo; }