Annotation of coherent/d/bin/bc/readme, revision 1.1.1.1

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.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.