| | 1 | |
| | 2 | sub a_bit_of_p5_for__expand_backtrack_macros() is p5 {' |
| | 3 | { package BacktrackMacrosKludge; |
| | 4 | sub _let_gen { |
| | 5 | my($vars) = @_; |
| | 6 | my $nvars = 1+($vars =~ tr/,//); |
| | 7 | my $tmpvars = join(",",map{"\$__tmp${_}__"}(0..($nvars-1))); |
| | 8 | push(@SCRATCH::_let_stack,[$vars,$tmpvars]); |
| | 9 | "(do{my \$__v__ ; my($tmpvars); { local($vars)=($vars); \$__v__ = do{ "; |
| | 10 | } |
| | 11 | sub _let_end { |
| | 12 | my $e = shift(@SCRATCH::_let_stack) || die "LET(){ }LET pairs didnt match up"; |
| | 13 | my($vars,$tmpvars) = @$e; |
| | 14 | "}; if(!FAILED(\$__v__)){ ($tmpvars)=($vars); }}; if(!FAILED(\$__v__)){ ($vars)=($tmpvars) }; \$__v__ })" |
| | 15 | } |
| | 16 | } |
| | 17 | '}; |
| | 18 | a_bit_of_p5_for__expand_backtrack_macros(); |
| | 19 | |
| | 20 | |