Annotation of researchv10no/cmd/f2c/output.h, revision 1.1.1.1

1.1       root        1: /* nice_printf -- same arguments as fprintf.
                      2: 
                      3:        All output which is to become C code must be directed through this
                      4:    function.  For now, no buffering is done.  Later on, every line of
                      5:    output will be filtered to accomodate the style definitions (e.g. one
                      6:    statement per line, spaces between function names and argument lists,
                      7:    etc.)
                      8: */
                      9: #include "niceprintf.h"
                     10: 
                     11: extern int nice_printf ();
                     12: 
                     13: 
                     14: /* Definitions for the opcode table.  The table is indexed by the macros
                     15:    which are #defined in   defines.h   */
                     16: 
                     17: #define UNARY_OP 01
                     18: #define BINARY_OP 02
                     19: 
                     20: #define SPECIAL_FMT NULL
                     21: 
                     22: #define is_unary_op(x) (opcode_table[x].type == UNARY_OP)
                     23: #define is_binary_op(x) (opcode_table[x].type == BINARY_OP)
                     24: #define op_precedence(x) (opcode_table[x].prec)
                     25: #define op_format(x) (opcode_table[x].format)
                     26: 
                     27: /* _assoc_table -- encodes left-associativity and right-associativity
                     28:    information; indexed by precedence level.  Only 2, 3, 14 are
                     29:    right-associative.  Source:  Kernighan & Ritchie, p. 49 */
                     30: 
                     31: extern char _assoc_table[];
                     32: 
                     33: #define is_right_assoc(x) (_assoc_table [x])
                     34: #define is_left_assoc(x) (! _assoc_table [x])
                     35: 
                     36: 
                     37: typedef struct {
                     38:     int type;                  /* UNARY_OP or BINARY_OP */
                     39:     int prec;                  /* Precedence level, useful for adjusting
                     40:                                   number of parens to insert.  Zero is a
                     41:                                   special level, and 2, 3, 14 are
                     42:                                   right-associative */
                     43:     char *format;
                     44: } table_entry;
                     45: 
                     46: 
                     47: extern char *fl_fmt_string;    /* Float constant format string */
                     48: extern char *db_fmt_string;    /* Double constant format string */
                     49: extern char *cm_fmt_string;    /* Complex constant format string */
                     50: extern char *dcm_fmt_string;   /* Double Complex constant format string */
                     51: 
                     52: extern int indent;             /* Number of spaces to indent; this is a
                     53:                                   temporary fix */
                     54: extern int tab_size;           /* Number of spaces in each tab */
                     55: extern int in_string;
                     56: 
                     57: extern table_entry opcode_table[];
                     58: 
                     59: 
                     60: void expr_out (), out_init (), out_addr (), out_const ();
                     61: void out_name (), extern_out (), out_asgoto ();
                     62: void out_if (), out_else (), elif_out ();
                     63: void endif_out (), end_else_out ();
                     64: void compgoto_out (), out_for ();
                     65: void out_end_for (), out_and_free_statement ();

unix.superglobalmegacorp.com

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