X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?p=subdirmk.git;a=blobdiff_plain;f=generate;h=f5c416db226dd22b1c2b7e434c09f3516fc1b2b2;hp=cfb6642132e77003f119ad994196682d3068b113;hb=31d62e1963cf04d00d99489b5ff4015a8f49b4fb;hpb=9307fbe53d53ae3deacb391d0b5f3c552ace0a89 diff --git a/generate b/generate index cfb6642..f5c416d 100755 --- a/generate +++ b/generate @@ -216,6 +216,7 @@ sub process_input_mk ($$$$) { local $ddbl; my @nest = (['']); + my $evalcall_brackets; my $push_nest = sub { my ($nk, $nndbl, $what) = @_; @@ -256,11 +257,11 @@ sub process_input_mk ($$$$) { od $1; if ($2 eq '{') { od $2; - $ddbl++; + $evalcall_brackets++; next; } elsif ($2 eq '}') { od $2; - next if --$ddbl; + next if --$evalcall_brackets; $pop_nest->('eval'); od '}'; next; @@ -284,6 +285,7 @@ sub process_input_mk ($$$$) { elsif (s{^\$\{}{}) { err 'macro invocation cannot be re-$-doubled' if $ddbl; od '${eval ${call '; + $evalcall_brackets = 1; $push_nest->('eval',1, '&${...}'); } elsif (s{^([~^]?)(?=[ \t])}{}) { my $prefix = $pfxmap{$1} // die "internal error ($1?)";