Commit eb18de1
dcl: read a (abs) and A (average); correct the previous commit's count
The count in 1ed003b was wrong. It came from calling evaluable() on the
tuples expressions() yields, (offset, path, string), rather than on the
strings. Iterating a tuple finds no recognised tokens, so evaluable()
returned True vacuously and every expression looked evaluable. The real
figure at that commit was 23 of 25 distinct expression strings, not 52 of 52.
a and A are named by the interpreter's own trace strings: 'absolut %d; ' at
0952ACB4 and 'Average; ' at 0952ACC4.
a is absolute value, unary in place -- 08906A26 loads @(4,r9) as the argument
and 08906A28 stores the result back to it, leaving the depth alone.
Implemented, so xa' now evaluates.
A is read but deliberately left unimplemented. It averages only when it is the
expression's last character, or second-to-last followed by ' (08906A6A /
08906A72 / 08906A7C) -- exactly the shape xA'. It then drains the stack into a
sum at r14+124 with a count in r13 and divides via __sdivsi3_i4. But the
depth-- at 08906A82 precedes the loop guard, so a one-element stack never
enters the loop and the count stays zero: a bare xA' divides by zero. A only
yields a value once the dataflow node array at ctx+84 contributes, which is
the same reason the nine-placeholder expressions cannot be evaluated
standalone. Refusing is the correct result, not a gap in the reading.
Also corrects an earlier claim: the scan that reported no cmp/eq #39 anywhere
in the interpreter used the linear disassembly, which halts at the first
literal pool and so never reached the handler. Per-word disassembly finds one
at 08906A7C, inside A. The conclusion that ' is a no-op still holds -- it rests
on the shared loop tail at 08906C1A, not on that scan.
24 of 25 distinct expressions now evaluate. Coverage stays 100.00% over 10846
records. Still refused: ! i o r m, whose handlers have not been read.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>1 parent 1ed003b commit eb18de1
1 file changed
Lines changed: 35 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
566 | 566 | | |
567 | 567 | | |
568 | 568 | | |
569 | | - | |
| 569 | + | |
570 | 570 | | |
571 | 571 | | |
572 | 572 | | |
| |||
673 | 673 | | |
674 | 674 | | |
675 | 675 | | |
676 | | - | |
677 | | - | |
678 | | - | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
679 | 701 | | |
680 | 702 | | |
681 | 703 | | |
| |||
785 | 807 | | |
786 | 808 | | |
787 | 809 | | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
788 | 819 | | |
789 | 820 | | |
790 | 821 | | |
| |||
0 commit comments