|
|
1.1 root 1: Done:
2: Write library:
3: sine, cosine, exponential, log, arctangent, Bessel functions
4:
5: Rewrite yytname so that += is += not ADDAB, etc.
6:
7: gerror should cause the parser to enter the error state.
8:
9: In the event of a syntax error (or any error in a definition for
10: that matter) someone should do a remloc on the parameters and autos.
11: As it is now, you can never use those variables as parameters again,
12: and whats more, if you refer to their global equivalents while in
13: a function, it uses the aborted local value instead.
14: One solution (gross) is to simply walk the dictionary on errors and
15: remove all local stuff. Another is to have the error production
16: notice that a definition is going on because retfrom is non-null
17:
18: Note that currently, literal number space is never recovered. The result
19: is that if you give bc a large file with expressions to evaluate, it
20: will run out of space. Strings are also lost.
21:
22: Fix exponentiation so that negative powers are implemented or reported
23: as errors. Also report sqrt(x<0) as bc error not mp fatal.
24:
25: Change `foo' into "foo", damn terminal parochialists.
26:
27: Recover literal storage in defunct function bodies when the function is
28: being redeclared. Requires size field in function definition so literal
29: scanner can find end of function body.
30:
31: Provide line numbers on syntax errors within files.
32:
33: Note that currently a quit in a file simply goes to the next file.
34: Note also that quit is executed when parsed, even if it is in a
35: function definition or a conditional which is never true.
36: These are both certainly wrong.
37:
38: The reservation of A-F for digits is stupid, the recognition of A-F as
39: digits in ibase==10 is doubly stupid, the local escapes to hex and octal
40: are trebly stupid. Require numbers to begin with a digit or full stop.
41:
42: ibase=16; 0.FFFF; /* does not compute */
43:
44: Note that the output routine gets totally confused as to what column it is
45: on with tabs. It should do it right.
46:
47: Not done:
48: Ask Rico and Johann if there is any way for interp and yyparse to
49: work as coroutines rather than subroutines so that the interp stack
50: and the yyparse stack can share memory.
51: I don't think so, except by accepting at each end of statement
52: or define.
53:
54: Eventually the asserts and bogus defaults should be removed, but
55: no need to do so until we have faith.
56: If anyone knew which they were.
57:
58: Should bc catch interrupts.
59: Yes.
60:
61: My random number spectral test blows up for n = 4. The bug changes
62: depending on the strings entered in the program and the amount of
63: debugging code entered into bc. Typically: sqrt of negative, bad
64: pointer in free, segmentation violation in free. Number of iterations
65: of computation accomplished also varies as the contents of the program
66: changes. Now: smult.c: 50: assert(0 <= carry && carry <= NEFL) failed.
67:
68: #include "file" should be allowed.
69: #redirect "file" should be allowed.
70:
71: Make more than one auto per define legal. Too hard?
72:
73: Implement && and || and !. Too hard?
74:
75: Fix realloc work around in bcmutil.c/select()
76:
77: Merge changes from cef's msdos port.
78:
79: Fix any conflicts with /usr/src/cmd/dc
80:
81: Make cstream dynamically grow; must convert all the absolute loc pointers
82: into cstream offsets and fix the patches so they still work. Also shrink
83: cstream after it has grown to encompass a function.
84:
85: The stack should be cleaned up after bcmerr(), which should also catch
86: the mpalc() call to mperr(); people should understand that they can't
87: expect everything to be hunky-dory at this point, but they should be
88: allowed to salvage what information they can.
89:
90: Type check argument lists for functions.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.