chiark
/
gitweb
/
~ian
/
subdirmk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
generate: Nested scope: Change `Eval' to `eval'
[subdirmk.git]
/
generate
diff --git
a/generate
b/generate
index 49038dfbe0ca5a57ca69221eb9f38f2f5b1fc6ef..747a79b8441a740dedeb641886849111c5077c27 100755
(executable)
--- a/
generate
+++ b/
generate
@@
-218,14
+218,14
@@
sub process_input_mk ($$$$) {
my @nest = (['']);
my $push_nest = sub {
my @nest = (['']);
my $push_nest = sub {
- my ($nk, $nndbl) = @_;
- unshift @nest, [ $nk, $ddbl ];
+ my ($nk, $nndbl
, $what
) = @_;
+ unshift @nest, [ $nk, $ddbl
, $what, $.
];
$ddbl = $nndbl;
};
my $pop_nest = sub {
my ($nk) = @_;
$ddbl = $nndbl;
};
my $pop_nest = sub {
my ($nk) = @_;
- die unless $nest[0][0] eq $nk;
- # ^ xxx need better message
+ err "unexpectedly closed $nk in middle of $nest[0][0] ($nest[0][2])"
+ unless $nest[0][0] eq $nk;
$ddbl = (shift @nest)[1];
};
$ddbl = (shift @nest)[1];
};
@@
-235,7
+235,7
@@
sub process_input_mk ($$$$) {
$set_esc->();
next;
} elsif (s#^\s*$esc\:endm\s+$##) {
$set_esc->();
next;
} elsif (s#^\s*$esc\:endm\s+$##) {
- $pop_nest->('
M
acro');
+ $pop_nest->('
m
acro');
od "endef\n";
next;
} elsif (s#^\s*$esc\:(?=(-?)include|macro)##) {
od "endef\n";
next;
} elsif (s#^\s*$esc\:(?=(-?)include|macro)##) {
@@
-250,7
+250,7
@@
sub process_input_mk ($$$$) {
for (;;) {
err 'cannot $-double &-processed RHS of directive'
if $ddbl && defined $buffering_output;
for (;;) {
err 'cannot $-double &-processed RHS of directive'
if $ddbl && defined $buffering_output;
- unless ($nest[0][0] eq '
E
val'
+ unless ($nest[0][0] eq '
e
val'
? s{^(.*?)($esc|[{}])}{}
: s{^(.*?)($esc)}{}) { od $_; last; }
od $1;
? s{^(.*?)($esc|[{}])}{}
: s{^(.*?)($esc)}{}) { od $_; last; }
od $1;
@@
-259,7
+259,7
@@
sub process_input_mk ($$$$) {
next;
} elsif ($2 eq '}') {
next if --$ddbl;
next;
} elsif ($2 eq '}') {
next if --$ddbl;
- $pop_nest->('
E
val');
+ $pop_nest->('
e
val');
od '}}';
next;
}
od '}}';
next;
}
@@
-282,7
+282,7
@@
sub process_input_mk ($$$$) {
elsif (s{^\$\{}{}) {
err 'macro invocation cannot be re-$-doubled' if $ddbl;
od '${eval ${call ';
elsif (s{^\$\{}{}) {
err 'macro invocation cannot be re-$-doubled' if $ddbl;
od '${eval ${call ';
- $push_nest->('
Eval',1
);
+ $push_nest->('
eval',1, '&${...}'
);
} elsif (s{^([~^]?)(?=[ \t])}{}) {
my $prefix = $pfxmap{$1} // die "internal error ($1?)";
my $after='';
} elsif (s{^([~^]?)(?=[ \t])}{}) {
my $prefix = $pfxmap{$1} // die "internal error ($1?)";
my $after='';
@@
-296,7
+296,8
@@
sub process_input_mk ($$$$) {
od $_;
$_ = '';
} else {
od $_;
$_ = '';
} else {
- err "bad &-escape \`$$esclitr$_'";
+ m{^.{0,5}};
+ err "bad &-escape \`$$esclitr$&'";
}
}
if (defined $buffering_output) {
}
}
if (defined $buffering_output) {
@@
-308,13
+309,14
@@
sub process_input_mk ($$$$) {
od "\n";
} elsif (m#^macro\s+(\S+)\s+$#) {
od "define $1\n";
od "\n";
} elsif (m#^macro\s+(\S+)\s+$#) {
od "define $1\n";
- $push_nest->('
Macro', 1
);
+ $push_nest->('
macro', 1, '&:macro'
);
} else {
die "internal error ($_?)";
}
}
}
} else {
die "internal error ($_?)";
}
}
}
- die "unclosed $nest[0][0]" if $nest[0][0];
+ die "subdirmk: $f:$nest[0][3]: unclosed $nest[0][0] ($nest[0][2])\n"
+ if $nest[0][0];
$input->error and die "read $f: $!\n";
close $input or die "close $f: $!\n";
}
$input->error and die "read $f: $!\n";
close $input or die "close $f: $!\n";
}