Annotation of coherent/d/bin/bc/bc.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  *     Secondary inclusions.
                      3:  */
                      4: 
                      5: #include <mprec.h>     /* multi-precision integer declarations */
                      6: #include "bcmch.h"     /* bc-machine definitions */
                      7: #include "bcsymtbl.h"  /* symbol table definitions */
                      8: 
                      9: 
                     10: /*
                     11:  *     Manifest constants.
                     12:  */
                     13: 
                     14: #define        TRUE            (0 == 0)
                     15: #define        FALSE           (0 != 0)
                     16: #define        MAXWORD         80              /* maximum token length */
                     17: #define        MAXSTRING       250             /* maximum quoted-string length */
                     18: #define        MAXSTACK        200             /* max pseudo-machine run-time stack */
                     19: #define        MAXCODE         1000            /* maximum function code size */
                     20: #define        ABUMP           8               /* array growth quantum */
                     21: #define        LINELEN         72              /* maximum output line length */
                     22: #define NOSHELL                127             /* system return if no shell */
                     23: 
                     24: /*
                     25:  *     The nel macro returns the number of elements in the array
                     26:  *     "array".  It will be a compile time constant.
                     27:  */
                     28: 
                     29: #define nel(array)     ((sizeof (array)) / (sizeof *(array)))
                     30: 
                     31: /*
                     32:  *     The following macros are used to place items in the code
                     33:  *     stream of the bc-machine.
                     34:  */
                     35: 
                     36: #define        emitop(op)              (incloc()->opcode = (op))
                     37: #define        emitzap                 (incloc()->address = -1, loc - 1)
                     38: #define        emitaddr(addr)          (loc->address = (addr) - loc, incloc())
                     39: #define        emitnum(num)            (incloc()->lvalue = (num))
                     40: #define emitarry(arry)         (incloc()->alvalue = (arry))
                     41: #define emitstr(str)           (incloc()->svalue = (str))
                     42: #define emitcnt(cnt)           (incloc()->ivalue = (cnt))
                     43: #define emitid(ident)          (incloc()->dvalue = (ident))
                     44: #define patch(target, addr)    ((target)->address = (addr) - (target))
                     45: 
                     46: /*
                     47:  *     Global functions that return non-ints.
                     48:  */
                     49: 
                     50: rvalue         *getnum();              /* read number from stdin */
                     51: rvalue         *select();              /* select an array element */
                     52: code           *incloc();              /* return next slot and advance loc */
                     53: mint           *pow10();               /* return 10 to a power */
                     54: opcode         negate();               /* negate condition of branch */
                     55: stkent         *pauto();               /* initialize autos used in a bc fnc.*/
                     56: stkent         *newframe();            /* frame value after a function call */
                     57: char           *realloc();             /* call in dc.c and bcmutil.c */
                     58: 
                     59: /*
                     60:  *     Global variables.
                     61:  */
                     62: 
                     63: extern int     allok;                  /* True iff no syntax errors */
                     64: extern int     scale;                  /* scale register */
                     65: extern int     ibase;                  /* input base */
                     66: extern dicent  *dictionary;            /* root of string table */
                     67: extern code    cstream[];              /* code stream */
                     68: extern code    *loc;                   /* where next code item goes */
                     69: extern mint    ten;                    /* constant ten */
                     70: extern mint    maxsobase;              /* max small output base (16) */
                     71: extern mint    outbase;                /* output base */
                     72: extern rvalue  dot;                    /* last number printed */
                     73: extern rvalue  zero;                   /* constant zero */
                     74: extern FILE    *infile;                /* current input file */
                     75: extern int     inline;                 /* current input line */
                     76: extern char    *infnam;                /* current file name */

unix.superglobalmegacorp.com

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