All pastes #944013 Raw Edit

Anonymous

public text v1 · immutable
·published 2008-03-15 19:44 UTC
rendered paste body
# 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;
}