|
|
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.